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=False
mereka 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_now
danauto_now_add
dianggap jahat, jadi cobalah untuk menghindarinya. Jawaban ini menjelaskan mengapa dan memberikan pendekatan yang lebih baik, mengesampingkansave()
metode ini.