Quel est le meilleur moyen de définir une date de création pour un objet automatiquement, ainsi qu'un champ qui enregistrera la dernière mise à jour de l'objet?
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')
Je reçois l'erreur:
objects_object.created_at may not be NULL
Dois-je définir manuellement cette valeur moi-même? Je pensais que c’était le but des paramètres passés à DateTimeField
(ou sont-ils juste des valeurs par défaut, et depuis que j’ai défini editable=False
ils ne sont pas affichés sur le formulaire, donc ne sont pas soumis dans la demande, et donc ne sont pas mis dans le formulaire?).
Quelle est la meilleure façon de faire cela? Un __init__
méthode?
Vous pouvez utiliser le auto_now
et auto_now_add
options pour updated_at
et created_at
respectivement.
class MyModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)