¿Cuál es la mejor manera de establecer una fecha de creación para un objeto automáticamente, y también un campo que registrará cuándo se actualizó el objeto por última vez?
modelos.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')
Me sale el error:
objects_object.created_at may not be NULL
¿Tengo que configurar este valor manualmente yo mismo? Pensé que ese era el punto de los parámetros pasados a DateTimeField
(o son solo valores predeterminados, y desde que lo configuré editable=False
no se muestran en el formulario, por lo tanto, no se envían en la solicitud y, por lo tanto, no se obtienen poner en el formulario?).
¿Cuál es la mejor manera de hacer esto? Un __init__
metodo?
auto_now
yauto_now_add
son considerados malvados, así que trata de evitarlos. Esta respuesta explica por qué y proporciona un mejor enfoque, anulando elsave()
método.