Apa cara terbaik untuk menetapkan tanggal pembuatan objek secara otomatis, dan juga bidang yang akan merekam saat objek terakhir diperbarui?
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')
Saya mendapatkan kesalahan:
objects_object.created_at may not be NULL
Apakah saya harus menetapkan sendiri nilai ini secara manual? Saya pikir itu adalah titik parameter dilewatkan ke DateTimeField(atau apakah mereka hanya default, dan karena saya telah menetapkan editable=Falsemereka tidak ditampilkan pada formulir, maka jangan dikirimkan dalam permintaan, dan karena itu tidak mendapatkan dimasukkan ke dalam formulir?).
Apa cara terbaik untuk melakukan ini? Sebuah __init__metode?
auto_nowdanauto_now_adddianggap jahat, jadi cobalah untuk menghindarinya. Jawaban ini menjelaskan mengapa dan memberikan pendekatan yang lebih baik, mengesampingkansave()metode ini.