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=Falseils 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_nowetauto_now_addsont considérés comme mauvais, alors essayez de les éviter. Cette réponse explique pourquoi et fournit une meilleure approche, supplantant lasave()méthode.