我正在嘗試並不困難,但它確實無法正常工作。我看不到錯誤在哪裏。在我的抽象用戶模型中,我有一個is_donator方法,它不起作用。Django日期時間問題
@property
def is_donator(self):
if(self.donator >= datetime.now()):
return True
else:
return False
某些原因,它只是不會返回任何東西,但對我而言,這一切都看起來不錯,但任何想法?
我正在嘗試並不困難,但它確實無法正常工作。我看不到錯誤在哪裏。在我的抽象用戶模型中,我有一個is_donator方法,它不起作用。Django日期時間問題
@property
def is_donator(self):
if(self.donator >= datetime.now()):
return True
else:
return False
某些原因,它只是不會返回任何東西,但對我而言,這一切都看起來不錯,但任何想法?
你有兩個相關的問題。首先是你使用了錯誤的比較。
if(self.donator >= datetime.now()):
這意味着捐獻者必須在未來某個時候成爲捐獻者。
將其更改爲
if(self.donator <= datetime.now()):
這將確保他們成爲過去的獻血者。
你擁有的另一個問題是,你正在使用auto_now:
每次對象保存時間自動設置現場到現在。 用於「上次修改」的時間戳。請注意,當前日期始終使用爲 ;這不僅是您可以覆蓋的默認值。
然後,這與您的第一個問題有關。每次更新用戶字段時 - 如果您沒有明確設置字段 - 則默認爲現在。
根據意見更新:這是檢查您的捐助者是否不爲空,並確保它存在。如果它不存在,則由您決定您的邏輯,但如果它不存在,則您的用戶不是捐贈者。您可以在except
區塊中使用return False
。這個塊非常冗長,但它明確地告訴你發生了什麼。
def is_donator(self):
try:
if self.donator: # This is checking that self.donator is not null
if(self.donator >= datetime.now()):
return True
else:
return False
else:
# return false? # This runs if self.donator is null
except NameError:
# do something (or just 'pass', because your self.donator value doesn't exist)
你怎麼稱呼它?你確定'self.donator'是一個日期時間對象嗎? – msvalkon
我從模板中調用它並且這是我的捐贈者聲明:donator \t = models.DateTimeField(auto_now = True) – Callum
這不是總是失敗,因爲他們可能成爲過去的捐助者嗎? – Andy