Qual è il modo migliore per impostare automaticamente una data di creazione per un oggetto e anche un campo che registrerà l'ultimo aggiornamento dell'oggetto?
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')
Ottengo l'errore:
objects_object.created_at may not be NULL
Devo impostare manualmente questo valore da solo? Ho pensato che fosse il punto dei parametri passati a DateTimeField
(o sono solo valori predefiniti, e poiché ho impostato editable=False
non vengono visualizzati nel modulo, quindi non vengono inviati nella richiesta e quindi non ottengono messo nella forma?).
Qual è il modo migliore per farlo? Un __init__
metodo?
auto_now
eauto_now_add
sono considerati malvagi, quindi cerca di evitarli. Questa risposta spiega perché e fornisce un approccio migliore, ignorando ilsave()
metodo.