Я пытаюсь использовать ListView для отображения всех моих городов.Как подсчитать объекты, связанные с элементом, отображаемым в ListView?
Однако я хотел бы показать, для каждого города, число проживающих в нем граждан.
Models.py
class Town(models.Model):
name = models.CharField()
class Citizen(models.Model):
name = models.CharField()
town = models.ForeignKey(Town)
Views.py
class TownView(ListView):
model = Town
def get_context_data(self, **kwargs):
context = super(TownView, self).get_context_data(**kwargs)
context['towns'] = Town.objects.all().prefetch_related('players')
return context
Это не работает, потому что prefetch_related будет работать только тогда, когда я там был атрибут игрок с точки зрения города, возможно, через многоtomany поле.
Как я могу получить для каждого города количество граждан, у которых есть предки для этого города?
Кроме того, как бы выглядел бы мой шаблон? В настоящее время, это выглядит следующим образом:
Шаблон<table>
{% for town in open_towns %}
<tr>
<td><a href="/town/join/{{ town.slug }}/">{{ town.name }}</a></td>
<td>population : {{ Player.objects.filter(town=town).count() }}</td>
</tr>
{% endfor %}
</table>
Но это, очевидно, тоже неправильно.