2011-05-05 20 views
9

En uno de los modelos que he establecido un campo de marca de tiempo de la siguiente manera:Django DateTimeField auto_now_add no trabajar

created_datetime = models.DateTimeField(auto_now_add = True) 

Mientras que en la cáscara soy capaz de crear un obj y guardarlo, sin embargo, en mi aplicación se está levantando una excepción que el campo created_datetime no puede ser nulo.

Confundido donde las cosas salieron mal !! Cómo reslovelo

+0

Es mejor utilizar un 'save()' personalizado en lugar de usar 'auto_now_add'. [Lea esto.] (Http://stackoverflow.com/questions/1737017/django-auto-now-and-auto-now-add) – Konstant

Respuesta

2

Usted puede hacer algo como esto

created_datetime = models.DateTimeField(auto_now_add=True, auto_now=False) 
11

Por lo que yo sé, la mejor práctica para datetimes por defecto es el uso de lo siguiente:

created_datetime = models.DateTimeField(default=datetime.datetime.now) 

No se olvide de importación de fecha y hora

+0

existe un enfoque similar para '' auto_now'' o está bien as- ¿es? – Flowpoke

+0

Creo que la mejor práctica para 'auto_now' es anular' save() 'y configurar la fecha y hora manualmente. –

-1

la siguiente manera está en la "parte 1" de Django documentación

from django.utils import timezone 
p = Poll(question="What's new?", pub_date=timezone.now()) 
Cuestiones relacionadas