2016-10-03 27 views
0

我有周期模型,這個模型有一個當前的屬性,應該計算哪些週期是當前的。無法計算django當前日期屬於哪個範圍?

@with_author 
    class Period(CommonInfo): 
     version = IntegerVersionField() 
     order_value = models.PositiveSmallIntegerField() 
     start_date = models.DateField() 
     end_date = models.DateField() 
     name = models.CharField(max_length=30) 
     duration = models.PositiveSmallIntegerField(null=True, blank=True) 
     is_special = models.BooleanField(default=False) 
     is_marked = models.BooleanField(default=False) 
     _is_current = models.NullBooleanField(blank=True, null=True, default=None) 

     def __unicode__(self): 
      return u'%s %i %s ' % ("#", self.order_value, self.name) 

     def _is_current(self): 
      if self.start_date <= datetime.datetime.now().date() <= self.end_date:   
       self._is_current = True 
      else: 
       self._is_current = False 

     @property 
     def is_current(self): 
      if self._is_current is None: 
       self._is_current() 
      return self._is_current 

但是,它不計算,我沒有得到任何錯誤。我做錯了什麼?

+0

什麼錯誤你得到了什麼,你的代碼在哪裏被觸發? – elethan

+0

它被觸發。沒有得到任何錯誤,只是我的國旗沒有成爲現實時,應該是。 –

+0

將'self._is_current'設置爲'True'或'False'後,您需要調用'self.save()' – elethan

回答

0

首先,你需要改變你的方法的名稱,因爲它是與您的數據庫字段(即之一,self._is_current指的是指你的NullBooleanField和你的檢查,如果週期是當前的方法。此外,你需要更新現場後打電話到save()嘗試更新(和重命名)您的_is_current()方法如下:。

def period_is_current(self): 
     if self.start_date <= datetime.datetime.now().date() <= self.end_date: 
      self._is_current = True 
     else: 
      self._is_current = False 
     self.save() 
0

這是非常混亂,我只想使用屬性:

@property 
def is_current(self): 
    if not self._is_current: 
     self._is_current = (self.start_date <= datetime.datetime.now().date() <= self.end_date) 
     self.save() 
    return self._is_current 
+0

現在我得到錯誤沒有這樣的列:lease_period._is_current –

+0

您是否刪除了'_is_current'字段?你需要保持這一點。我的意思是刪除次要的'def _is_current()' –