Django - forloop для показа/фильтрации значения, чтобы показывать записи только один раз
У меня есть модель (Restrictie), в которой зарегистрированы те, кто проголосовал (participanti) и те, кто проголосовал (votant). Если я делаю forloop в шаблонах, я могу видеть, кто за кого голосовал, но для каждой записи отображается одна строка. Как я могу сделать forloop или запрос, в котором участники отображаются только один раз и рядом со всеми голосующими, например:
имя участника - (имя избирателя 1, имя избирателя 2, ....)
Ниже мой код
models.py
class Participanti(models.Model):
campanievot = models.ForeignKey(Campanie, on_delete=models.CASCADE)
nume_participant = models.CharField(max_length=200, verbose_name='nume')
dep_participant = models.CharField(max_length=200, verbose_name='departament')
votes = models.IntegerField(default=0)
def __str__(self):
return self.nume_participant
class Meta:
verbose_name = 'Participanti'
verbose_name_plural = 'Participanti'
class Restrictie(models.Model):
participanti = models.ForeignKey(Participanti,on_delete=models.CASCADE, verbose_name='Votat')
votant = models.ForeignKey(UserVot,on_delete=models.CASCADE)
def __str__(self):
return str(self.participanti)
class Meta:
verbose_name = 'Voturi efectuate'
verbose_name_plural = 'Voturi efectuate'
<
def rezultate(request):
cineavotat = Restrictie.objects.all()
.......
<
{% for p in cineavotat %}
{{ p.participanti }} - {{ p.votant}}
{% endfor %}
<
В Views.py
def rezultate(request):
cineavotat = Restrictie.objects.all()
context = {'cineavotat': cineavotat}
return render(request, 'appname/templatename.html', context)
Может быть, лучше выбрать список Participanti и для каждого из них добавить список Restrictie в вашем представлении, например, так:
def rezultate(request):
cineavotat = []
for p in Participanti.objects.all():
cineavotat.append((p, p.restrictie_set.all()))
return render(request, 'appname/templatename.html', {'cineavotat': cineavotat})
А затем вы можете сделать это в своем шаблоне
{% for participanti, restrictie in cineavotat %}
{{ participanti }} -
{% for r in restrictie %}
{{r.votant}};
{% endfor %}
</br>
{% endfor %}
Результатом является
Some Participanti - User 1; User 2; User 3;
Another Participanti - User 2; User 3;