2013-05-22 3 views
0

Мне нужно рассчитать и сохранить дату на один год в будущем, если какое-то поле True. Но кажется, что datetime не работает, как я ожидаю. date Поле заполнено правильно, но featured_to_date Поле всегда остается пустым в любом случае. Вот модель:Django datetime не работает должным образом

import datetime 
from datetime import timedelta 

class Site(models.Model): 
    ... 
    date = models.DateTimeField() 
    featured = models.BooleanField(default=False) 
    featured_to_date = models.DateTimeField(blank=True,null=True) 
    ... 

    def save(self, *args, **kwargs): 
     if not self.id: 
      self.date = datetime.datetime.now() 
     if self.featured: 
      oneyear = timedelta(days=365) 
      featured_to_date = datetime.datetime.now() + oneyear 
     super(Site, self).save(*args, **kwargs) 
+0

Вы можете удалить файл 'если не self.id' логики, воспользовавшись [auto_now_add] (https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.DateField.auto_now_add) в поле 'date' – girasquid

ответ

4

Вам нужно установить self.featured_to_date, не featured_to_date, как это:

def save(self, *args, **kwargs): 
    if not self.id: 
     self.date = datetime.datetime.now() 
    if self.featured: 
     oneyear = timedelta(days=365) 
     self.featured_to_date = datetime.datetime.now() + oneyear 
    super(Site, self).save(*args, **kwargs) 
+0

Так очевидно, но я просто не видел его вообще , Спасибо, girasquid! – Goran

Смежные вопросы