2

我的问题类似于这个问题,他们使用 geoip 通过 IP 地址查找用户的纬度和经度。在我看来,我正在做这样的事情

g=Geoip()
lat,lon=g.lat_lon(some ip)

在这里,我希望自动填写表单字段,例如

 latitude=lat
 longitude=lon
 userform.save()

并且不想覆盖保存方法,因为我对 django 还很陌生,不知道它们是如何工作的。我尝试了上面的链接代码,但无法让它为我工作。如何在views.py中自动填充纬度和经度字段

4

1 回答 1

5

啊,直接潜入。除非你做一些非常愚蠢的事情,否则你不会伤害任何东西。顺便说一句,“愚蠢”包括在您的生产站点上使用未备份的数据库执行此操作。

要记住的重要一点是,您并没有覆盖save()方法,而是提供了它的特定于类的版本,该版本又可以调用父save()方法。例如

class MyModel(models.Model):
   ...
   def save(self):
      # whatever you need to do to the object before the save
      super(MyModel, self).save() # replace MyModel with *your* class name

或者,您可以super()先打电话,然后再做事。如果您的所有例程都是调用super(),那么您将有一个正确(但无用)的save()方法。

有关更多见解/信息,请参阅Python 文档

于 2010-12-14T00:02:57.157 回答