it-swarm.com.de

Automatisches Erstellungsdatum für Django Modellformularobjekte?

Wie kann ein Erstellungsdatum für ein Objekt am besten automatisch festgelegt werden und in einem Feld wird aufgezeichnet, 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 erhalte den Fehler:

objects_object.created_at may not be NULL

Muss ich diesen Wert selbst manuell einstellen? Ich dachte, das war der Sinn der Parameter, die an DateTimeField übergeben wurden (oder sind sie nur Standardwerte, und da ich editable=False Sie werden nicht im Formular angezeigt, werden daher nicht in der Anfrage eingereicht und werden daher nicht in das Formular eingefügt?).

Wie geht das am besten? Ein __init__ Methode?

120
Roger

Du kannst den ... benutzen auto_now und auto_now_add Optionen für updated_at und created_at beziehungsweise.

class MyModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
256
Manoj Govindan