我有一个包含三个字段的模型来确定文本是否应该在模板中可见。
如果选中布尔字段,它将覆盖两个日期字段。
如果布尔字段未选中,则仅当 startdate 为过去时才返回 True,如果设置了 enddate,则仅当日期设置为将来时才返回 true。
我怎样才能做到这一点?
这是我尝试过的,但没有像我想要的那样工作:
class Entry(models.Model):
name = models.CharField(max_length=200)
visible = models.BooleanField(default=False, help_text="If checked, the text will be visible, even if the datefield is set")
visible_start = models.DateTimeField(help_text="Visible from", blank=True, null=True)
visible_end = models.DateTimeField(help_text="Visible to", blank=True, null=True)
def is_visible(self):
now = timezone.now()
if not self.visible:
if self.visible_start and now < self.visible_start:
return False
if self.visible_end and now > self.visible_end:
return False
return True