0

Django モデルに、作成時にのみ保存されるいくつかのフィールドと、更新時にのみ保存されるその他のフィールドが必要です。たとえば、"date_created" と "author" と "date_edited" と "last_editor" です。

これを達成するにはどうすればよいですか? また、モデルを保存および更新するための 2 つの異なる会場 / ワークフローを作成するにはどうすればよいですか?

編集:

私が話しているフィールドはフォームには存在せず、ビューに作成されます。

4

2 に答える 2

3

カスタム ビューと管理者の機能を維持したい場合は、save メソッドが最適です。次に、編集日時を保存しようとしている場合は、 orで使用される引数auto_now_addを調べて確認することをお勧めします。それらは、作成と最新の編集の Timstamp の値を保存する方法を提供します。ここを見てください。最後に、モデルに対して save メソッドが呼び出されるたびにメソッドを呼び出す方法を提供する他の解決策を使用することもできます。これは、ロジックを分離するのに役立ちます。auto_nowDateTimeFieldDateFieldDjango Signals

class ExModel(models.Model):
  ...
  ...

  def save(self):
     if self.id:
       #update logic here
     else:
       #New creation logic here
于 2012-12-24T04:17:42.723 に答える
2

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)
于 2012-12-24T04:17:04.017 に答える