django模板中的if语句不正确
Posted
技术标签:
【中文标题】django模板中的if语句不正确【英文标题】:Incorrect if statement in django template 【发布时间】:2015-05-14 10:08:24 【问题描述】:我想列出仍在进行中和已完成的工作。 当所有工作都完成后 - “进行中”的工作列表将是空的。 目前我有这个代码,但它很糟糕。因为当我完成所有工作时,会有一个标题“进行中”。就在所有工作都在进行中的时候。
<h3>% trans 'In progress' %</h3>
% for worked_on in worker.worked_on.all %
% if worked_on.is_project_in_progress %
//Text here
% endif %
% endfor %
我的模特:
class WorkerWorkedOnProduct(models.Model):
worker = models.ForeignKey(Worker, verbose_name=_('Worker'), related_name='worked_on')
description = models.TextField()
is_project_in_progress = models.BooleanField(default=True)
is_the_project_is_finished = models.BooleanField(default=False)
【问题讨论】:
【参考方案1】:你应该使用
models.BooleanField(initial=True)
而不是 'default',因为如果您设置 default=True,它将始终返回为 True。
【讨论】:
对于模型字段, default=True 实际上可以满足您的需求。 Initial=True 用于表单字段【参考方案2】:默认=True 很好,如果这是你想要的。实际上,您可能希望在视图中解决此问题。您可以做的一件事是获取“进行中”工作的查询集并将其放入视图中的模板上下文中。如果您这样做,您可以简单地测试它是否包含 any 对象,例如 % if in_progress_stuff %your_header% endif %
【讨论】:
我有这个,但问题仍然存在:` % if is_project_in_progress %% trans 'In progress' %
% endif %` 您正在循环通过 WorkerWorkedOnProduct 对象的查询集,所有这些对象可能会或可能不会打开布尔值。如果您希望 h3 仅在 all 对象处于相同状态时出现(无论是 True 还是 False,无论您想要什么),您应该只在视图中检查此条件,然后添加上下文的新布尔值以上是关于django模板中的if语句不正确的主要内容,如果未能解决你的问题,请参考以下文章
如果评估的变量为 False,为啥我的 django 模板中的这个 IF 语句会执行?
我的 Django 模板中的“Else if”语句出现在 HTML 标头块之后