我正在将 date_added 和 date_modified 字段添加到我当前项目中的一堆常见模型中。我正在继承 models.Model 并添加适当的字段,但我想添加自动保存行为(即:每次有人调用 MyModel.save() 时,date_modified 字段都会更新。我看到两种方法:覆盖 save() 方法或在抽象基类中添加 pre_save 信号处理程序。
class CommonData(models.Model):
date_added = models.DateTimeField(default=datetime.datetime.today,null=False,blank=False)
date_modified = models.DateTimeField(default=datetime.datetime.today,null=True,blank=True)
# register a handler for the pre_save to update date_modified
def pre_save_handler(sender, **kwargs):
date_modified = datetime.datetime.today
def __init__():
pre_save.connect(pre_save_handler, sender=self)
或者
class CommonData(models.Model):
date_added = models.DateTimeField(default=datetime.datetime.today,null=False,blank=False)
date_modified = models.DateTimeField(default=datetime.datetime.today,null=True,blank=True)
# overriding save
def save(force_insert=False,force_update=False):
date_modified = datetime.datetime.now
return models.Model.save(force_insert, force_update)
我是 Django 和 Python 的新手,想知道哪种方法更“django”?哪个更有效率?这是“正确”的方法吗?