Quelle est la meilleure façon de définir automatiquement une date de création pour un objet, 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')
J'obtiens 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 mettre dans le formulaire?).
Quelle est la meilleure façon de procéder? Une __init__
méthode?
auto_now
etauto_now_add
sont considérés comme mauvais, alors essayez de les éviter. Cette réponse explique pourquoi et fournit une meilleure approche, supplantant lasave()
méthode.