使用for循环检查成员属性

时间:2017-12-30 20:47:24

标签: django django-templates

在我的应用程序中,每个项目都链接到一个团队,该团队有几个,每个成员都需要回答一个调查,该调查存储在我的数据库“Response”中

我想在我的页面中显示一个jumbotron,只有当所有用户在数据库中都有响应时。

我试过了:

<div class="container paddingtop80 marginbottom30">
{% for member in project.team_id.members.all %}
    {% if member.response_set.count > 0 %}
  <div class="jumbotron greenback">
    <h4>Welcome to the Project test "{{  project.name }}" Detail page</h4>
  </div>
    {% else %}
    <div class="jumbotron greenback">
      <h4>Welcome to the Project "{{  project.name }}" Detail page</h4>
    </div>
    {%endif%}
{% endfor %}
<div class="container paddingtop80 marginbottom30">
{% for member in project.team_id.members.all %}
    {% if member.response_set.count > 0 %}
  <div class="jumbotron greenback">
    <h4>Welcome to the Project test "{{  project.name }}" Detail page</h4>
  </div>
    {% else %}
    <div class="jumbotron greenback">
      <h4>Welcome to the Project "{{  project.name }}" Detail page</h4>
    </div>
    {%endif%}
{% endfor %}
 </div>

问题是,就像你现在可以看到我的jumbotron打印3次,因为我有3个成员。

如果响应存在或者> 0,我如何检查3个成员并且只打印一次jumbotron?

1 个答案:

答案 0 :(得分:1)

我会在Project上定义一个方法来检查是否有任何成员的响应。类似的东西:

class Project(models.Model):
    ...
    def has_member_responses(self):
        return Response.objects.filter(member__team__project=self).exists()

现在,在您的模板中,您可以删除for循环,只需执行以下操作:

{% if project.has_member_responses %}