2015-11-04 110 views
1

我是Django中的新成員。無法將datetime.datetime與builtin_function_or_method進行比較

我創建的模型具有start_date(開始日期成爲贊助商)和end_date(贊助商的結束日期)贊助的模式。

start_date = models.DateField(
     _("Start date"), 
     default=datetime.date.today) 

end_date = models.DateField(
     _("End date"), 
     default=datetime.date.today) 

我希望把所有的邏輯模型中,如果不可能的,那麼我想提出的邏輯視圖中。我使方法current_sponsor可以返回True或False(如果今天是在一個範圍start_date和end_date意味着True其他False)。

這是我current_sponsor方法

def current_sponsor(self): 
     today = datetime.date.today 
     if today >= self.start_date: 
      return True 
     elif today <= self.end_date: 
      return True 
     else: 
      return False 

的問題是我的錯誤can't compare datetime.datetime to builtin_function_or_method

我試圖看到使用Django殼的數據它似乎工作,但現實不起作用。

+3

...你錯過了括號。 – jonrsharpe

+1

@rischan沒有冒犯性,但它真的會讓你開始真正的閱讀異常消息......他們不會更清楚,但如果他們不是一個簡單的搜索就會使它變得如此;你得到的這些錯誤已被問及一百萬次。 –

+0

Thanks @AgustínLado – rischan

回答

4

datetime.date.today並沒有叫你認爲它的功能是:

>>> import datetime 
>>> datetime.date.today 
<built-in method today of type object at 0x7fb681a90f80> # NOT CALLING FUNCTION 

>>> datetime.date.today() # You need() at the end 
datetime.date(2015, 11, 4) 

如果添加了括號,你會得到你所期望的結果。

+0

謝謝@jonrshape現在我意識到我錯過了括號,但是當我放置括號時,我仍然收到錯誤'不能比較datetime.datetime到datetime.date'。 – rischan

+1

正如例外說的,你比較的日期之一是一個'datetime.datetime'對象,另一個是'datetime.date'對象。見[這個答案](http://stackoverflow.com/questions/7239315/cant-compare-datetime-datetime-to-datetime-date)。 – Tgsmith61591

+0

我將所有內容都更改爲'today = datetime.datetime.today()',現在我得到了不同的錯誤'不能比較偏移 - 天真的和偏移量感知的日期時間 ' – rischan