如果对象为空,如何在模板中显示按钮?

How in template show button if object is empty?

有人能说说我错在哪里吗?

我有 2 个模型:项目和目的。

class Purpose(models.Model):
    code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False)
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    text = models.TextField(_('Text'))
    comments = models.ManyToManyField("Comment")

每个项目只有一个目的。因此,在 project_detail 页面中,我只想在该项目没有任何其他目的对象时显示 purpose_add 按钮。当没有具有相同 project_code 的 Purpose 对象时,为什么我看不到按钮?

views.py:

def project_detail(request, project_code):
 ***
 purpose_is_not_exist = Purpose.objects.exclude(project=project_code).exists()
 ***

project_detail.html:

{% if purpose_is_not_exist %}
   <button id="purpose-add-button"></button>
{% endif %}
{% if not purpose_is_not_exist %}

你应该否定 False 布尔值。

混淆是变量名purpose_is_not_exist造成的。

Purpose.objects.exclude(project=project_code).exists()

以上语句returns是否存在Purpose对象。您应将变量重命名为 purpose_exists 以避免混淆。

而且,在模板中,当您想添加按钮时,如果它不存在则取反变量:

{% if not purpose_exists %}

或者,如果您想继续使用变量的原始名称,则只需在视图本身中取反即可。

purpose_is_not_exist = not Purpose.objects.exclude(project=project_code).exists()