オブジェクトの作成日を自動的に設定し、オブジェクトが最後に更新されたときに記録するフィールドを設定する最良の方法は何ですか?
models.py:
created_at = models.DateTimeField(False, True, editable=False)
updated_at = models.DateTimeField(True, True, editable=False)
views.py:
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
obj = form.save(commit=False)
obj.user = request.user
obj.save()
return HttpResponseRedirect('obj_list')
エラーが発生します:
objects_object.created_at may not be NULL
この値を自分で手動で設定する必要がありますか?それが渡されたパラメータのポイントだと思いましたDateTimeField
(または単にデフォルトであり、設定editable=False
したのでフォームに表示されないため、リクエストで送信されず、したがって取得されませんフォームに入れますか?)
これを行う最良の方法は何ですか?__init__
方法?
auto_now
とauto_now_add
考えられているので、それらを避けてください。この回答は、理由を説明し、save()
メソッドをオーバーライドしてより良いアプローチを提供します。