¿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=Falseno 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_nowyauto_now_addson considerados malvados, así que trata de evitarlos. Esta respuesta explica por qué y proporciona un mejor enfoque, anulando elsave()método.