Was ist der beste Weg, um ein Erstellungsdatum für ein Objekt automatisch festzulegen und auch ein Feld, das aufzeichnet, wann das Objekt zuletzt aktualisiert wurde?
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')
Ich bekomme den Fehler:
objects_object.created_at may not be NULL
Muss ich diesen Wert manuell einstellen? Ich dachte, das war der Punkt, an den die Parameter übergeben wurden DateTimeField
(oder sind sie nur Standardeinstellungen, und da ich sie festgelegt habe, werden editable=False
sie nicht im Formular angezeigt, daher werden sie nicht in der Anfrage gesendet und daher auch nicht in die Form bringen?).
Was ist der beste Weg, dies zu tun? Eine __init__
Methode?
auto_now
undauto_now_add
gelten als böse, also versuche sie zu vermeiden. Diese Antwort erklärt, warum und bietet einen besseren Ansatz, der diesave()
Methode überschreibt .