Django モデルに、作成時にのみ保存されるいくつかのフィールドと、更新時にのみ保存されるその他のフィールドが必要です。たとえば、"date_created" と "author" と "date_edited" と "last_editor" です。
これを達成するにはどうすればよいですか? また、モデルを保存および更新するための 2 つの異なる会場 / ワークフローを作成するにはどうすればよいですか?
編集:
私が話しているフィールドはフォームには存在せず、ビューに作成されます。
Django モデルに、作成時にのみ保存されるいくつかのフィールドと、更新時にのみ保存されるその他のフィールドが必要です。たとえば、"date_created" と "author" と "date_edited" と "last_editor" です。
これを達成するにはどうすればよいですか? また、モデルを保存および更新するための 2 つの異なる会場 / ワークフローを作成するにはどうすればよいですか?
編集:
私が話しているフィールドはフォームには存在せず、ビューに作成されます。
カスタム ビューと管理者の機能を維持したい場合は、save メソッドが最適です。次に、編集日時を保存しようとしている場合は、 orで使用される引数auto_now_add
を調べて確認することをお勧めします。それらは、作成と最新の編集の Timstamp の値を保存する方法を提供します。ここを見てください。最後に、モデルに対して save メソッドが呼び出されるたびにメソッドを呼び出す方法を提供する他の解決策を使用することもできます。これは、ロジックを分離するのに役立ちます。auto_now
DateTimeField
DateField
Django Signals
class ExModel(models.Model):
...
...
def save(self):
if self.id:
#update logic here
else:
#New creation logic here
save
主キーが評価されているかどうかを確認することで、モデルのメソッドをオーバーライドし、作成と更新を識別できます。
def save(self,*args,**kwargs):
if not self.pk: #object is being created
self.author = 'abc'
self.date_created = datetime.now()
else: #object is being updated
self.last_editor = 'abc'
self.date_edited = datetime.now()
super(MyModel,self).save(*args,**kwargs)