Je l'ai compris.
La question était que le champ renew_date
avait l'argument auto_now
ensemble à True
en tant que tel:
renew_date = models.DateField(auto_now=True, editable=False)
Je compris auto_now
signifie que la date actuelle sera utilisée lors de la création de l'objet, mais il se avère que ce pas le cas:
DateField.auto_now
automatiquement mis le champ à maintenant chaque fois que l'objet est enregistré. Utile pour les timestamps "last-modified" . Notez que la date actuelle est toujours utilisée; ce n'est pas seulement une valeur par défaut que vous pouvez remplacer.
De django docs.
Ce que je avais besoin était auto_now_add
qui:
Définis automatiquement le champ maintenant lorsque l'objet est créé. Utile pour la création d'horodatages. Notez que la date actuelle est toujours utilisée; ce n'est pas seulement une valeur par défaut que vous pouvez remplacer.
Ainsi, après avoir changé mon champ renew_date
:
renew_date = models.DateField(auto_now_add=True, editable=False)
tout cela fonctionne, très bien :)
>>> g = SelectStatProfile.objects.get(pk=3)
>>> g.renew_date
datetime.date(2010, 4, 11)
>>> from datetime import date, timedelta
>>> g.renew_date = date.today()+timedelta(days=365)
>>> g.renew_date
datetime.date(2011, 4, 11)
>>> g.save()
>>> g.renew_date
datetime.date(2011, 4, 11)
modèle publier –