【问题标题】:How in template show button if object is empty?如果对象为空,如何在模板中显示按钮?
【发布时间】:2017-09-24 16:40:33
【问题描述】:

谁能说我哪里做错了?

我有 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 的目的对象时,为什么我看不到按钮?

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 %}

【问题讨论】:

    标签: python html django python-3.x django-1.10


    【解决方案1】:

    混淆是由变量名purpose_is_not_exist引起的。

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

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

    并且,在模板中,当您想要添加按钮时,如果它不存在,则否定变量:

    {% if not purpose_exists %}
    

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

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

    【讨论】:

      【解决方案2】:
      {% if not purpose_is_not_exist %}
      

      你应该否定 False 布尔值。

      【讨论】:

        猜你喜欢
        • 2020-09-29
        • 1970-01-01
        • 2012-12-30
        • 1970-01-01
        • 2019-04-05
        • 1970-01-01
        • 2018-05-16
        • 2017-02-09
        • 2021-04-25
        相关资源
        最近更新 更多