我有一个django模板,它有两个不同的查询集传递给html模板。我想查看查询集中的每个项目并显示内容,然后我想要在仍然处于iniital循环中的同时浏览第二个数组,并检查两个信息是否匹配。如果两个信息之间存在匹配,我想从匹配信息中获取第一个结果。
我有一个查询可以获取组项列表。我有另一个查询来抓取活动列表。我想通过foreignkey获取与组相关的所有活动对象,并引用活动对象中的组。从小组的相关活动列表中,我想抓取第一条记录并仅显示该记录...如果小组(a)有10个与小组相关的活动,我想抓住第一个并显示它。 ..这是我的代码:
html tempalte:
<div class="col-12 info-div">
{% for group in groups %}
<div class="row">
<p class="col-12">
<a href="{% url 'group_home' group.group.name|slugify group.group.id %}">{{ group.group.name }}</a>
</p>
{% for act in activities %}
{% if act.group.id == group.id %}
<p class="col-12">
{{ act.description | first }}
</p>
{% endif %}
{% endfor %}
</div>
{% endfor %}
</div>
上面的html只是给了我每个相关活动的第一个字母,与我想要的相比,这是活动中的小组与通过循环播放的小组相匹配的第一个项目
views.py文件:
# grab all of the groups you are a member of
groups = Member.objects.filter(user = user).all()
# the following will be the last activity created for each group
activities = GroupActivity.objects.all()
models.py
class Group(models.Model):
name = models.CharField(max_length = 25)
description = models.CharField(max_length = 250, null=True)
created_by = models.ForeignKey(User, default=1, on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)
class GroupActivity(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
group = models.ForeignKey(Group, on_delete=models.CASCADE)
expense = models.ForeignKey(Expense, null=True, on_delete=models.CASCADE)
bundle = models.ForeignKey(Bundle, on_delete=models.CASCADE, null=True)
description = models.CharField(max_length=200, default='some action')
host = models.CharField(max_length=100, null=True)
reference = models.IntegerField(default=0)
category = models.SmallIntegerField(default = 1)
# 1 - general
# 2 - specific
# 3 - no validation
# 4 - validation
created = models.DateTimeField(auto_now_add=True)
答案 0 :(得分:0)
更好的回答:
{% for group in groups %}
<div class="row">
<p class="col-12">
<a href="{% url 'group_home' group.group.name|slugify group.group.id %}">{{ group.group.name }}</a>
</p>
{% with group.groupactivity_set.all|first as act %}
{% if act %}
<p class="col-12">
{{ act.description }}
</p>
{% endif %}
{% endwith %}
</div>
{% endfor %}
这里我们正在模板中做所有事情,就像那样简单。