1. ホーム
  2. python

[解決済み】Djangoのモデルフォームオブジェクトの自動作成日?

2022-04-13 23:53:23

質問

オブジェクトの作成日を自動的に設定し、オブジェクトが最後に更新された日を記録するフィールドも設定するには、どのような方法がありますか?

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 のオプションは updated_atcreated_at をそれぞれ作成します。

class MyModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)