将地理位置坐标插入Django元表单字段

时间:2012-05-22 00:31:55

标签: python django django-forms

我正在使用HTML5进行一些基本的地理定位。我目前有一个用于我的第一个Django应用程序的元表单,它具有lat和long坐标的空间,并且找到了使用Google Maps API获取这些坐标的正确代码(非常简单的东西)。

下一步:当用户访问应用程序时,将这些坐标自动插入元表单中。该应用程序理想情况下允许用户发布帖子并存储其坐标以供将来参考和过滤(这部分是一项重大努力;一次一步)。

以这种方式使用JavaScript(我知道很少)和Django似乎是实现这一目标的最有效方式,并且正在寻找一种直接的方法来实现这一点。我找到了一些方法来实现这个可能使用jQuery,但是使用元表单自动设置表单的结构,似乎没有一种简单的方法来向表单添加“id”(研究但不能似乎找到了一种手段)。

可以分享任何可以分享的见解或经验。

Model:
    class Story(models.Model):
        objects = StoryManager()
        title = models.CharField(max_length=100)
        topic = models.CharField(max_length=50)
        copy = models.TextField()
        author = models.ForeignKey(User, related_name="stories")
        zip_code = models.CharField(max_length=10)
        latitude = models.FloatField(blank=False, null=False)
        longitude = models.FloatField(blank=False, null=False)
        date = models.DateTimeField(auto_now=True, auto_now_add=True)
        pic = models.ImageField(upload_to='pictures', blank=True)
        caption = models.CharField(max_length=100, blank=True)

        def __unicode__(self):
            return " %s" % (self.title)

Form:

class StoryForm(forms.ModelForm):
    class Meta:
        model = Story
        exclude = ('author',)

1 个答案:

答案 0 :(得分:1)

Django通常指向RESTful个应用程序,因此每个现有对象都应该有自己的URL进行编辑(即使它是AJAX)。如此好的URL看起来像/obj/123/edit/用于编辑现有对象,而/obj/create/用于创建新对象。实际上,在完美的REST中,你可以使用很少的URL来进行所有CRUD活动,但这也足够了。因此,您在网址中有对象ID,无需在表单中复制它。

或者,您始终可以使用value="{{ form.instance.pk }}"在表单中显示隐藏的输入,并在视图中手动处理。