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=Falsenon 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_noweauto_now_addsono considerati malvagi, quindi cerca di evitarli. Questa risposta spiega perché e fornisce un approccio migliore, ignorando ilsave()metodo.