現在のプロジェクトの一般的なモデルの束に、date_added フィールドと date_modified フィールドを追加しています。models.Model をサブクラス化し、適切なフィールドを追加していますが、自動保存動作を追加したいと考えています (つまり、誰かが MyModel.save() を呼び出すたびに、date_modified フィールドが更新されます。2 つの方法があります: 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」であるか疑問に思いましたか? どちらがより効率的ですか? これを行う「正しい」方法はどれですか?