我正在尝试并不困难,但它确实无法正常工作。我看不到错误在哪里。在我的抽象用户模型中,我有一个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