¿Cuál es la mejor manera de establecer automáticamente una fecha de creación para un objeto, y también un campo que se registrará cuando el objeto se actualizó por última vez?Fecha de creación automática para objetos de formulario modelo django?
En mi modelo que tengo:
created_at = models.DateTimeField(False, True, editable=False)
updated_at = models.DateTimeField(True, True, editable=False)
y en mi opinión:
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 manualmente este valor a mí mismo ? Pensé que ese era el objetivo de los parámetros pasados a DateTimeFields (o son solo valores predeterminados, y como he configurado 'editable = False' no se muestran en el formulario, por lo tanto, no se envían en la solicitud y, por lo tanto, ¿no te ponen en la forma?).
¿Cuál es la mejor manera de hacerlo? ¿Un método init?
Gracias
ps - Soy un novato Django y Python ...
'auto_now' y' auto_now_add' son considerados malvados, así que trate de evitarlos. [Esta respuesta] (http://stackoverflow.com/a/1737078/1226722) explica por qué y proporciona un mejor enfoque, anulando el método 'save()'. – gregoltsov
produce este error: 'Está intentando agregar un campo no nulo 'created_at' a gameuser sin un valor predeterminado; no podemos hacer eso (la base de datos necesita algo para rellenar filas existentes). Seleccione una solución: 1) Proporcione un valor predeterminado único por única vez (se establecerá en todas las filas existentes) 2) Salga y permítame agregar un valor predeterminado en models.py Seleccione una opción: 1 Ingrese la valor predeterminado ahora, como válido Python Los módulos datetime y django.utils.timezone están disponibles, por lo que puede hacer, por ejemplo timezone.now() >>> timezone.now() ' –
elimine las filas en el databas, o marque la opción 1 y agregue timezone.now() – mullerivan