模型上的自定义保存方法 - django

Ale*_*and 10 django django-1.4

我在我的一个模型上覆盖了save方法:

def save(self, *args, **kwargs):
    self.set_coords()
    super(Post, self).save(*args, **kwargs)

def __unicode__(self):
    return self.address

# set coordinates
def set_coords(self):
    toFind = self.address + ', ' + self.city + ', ' + \
        self.province + ', ' + self.postal

    (place, location) = g.geocode(toFind)

    self.lat = location[0]
    self.lng = location[1]
Run Code Online (Sandbox Code Playgroud)

但是,我只想set_coords()在创建帖子时运行一次.更新模型时不应运行此功能.

我怎么能做到这一点?有没有办法检测模型是否正在创建或更新?

小智 27

def save(self, *args, **kwargs):
    if not self.pk:
        self.set_coords()
    super(Post, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)