Я пытаюсь перебрать список моделей и включить количество моделей, которые находятся на расстоянии 2 моделей (подключенных через FK, затем M2M). Пример: веб-сайт, созданный для пользователей, публикующих информацию о местных достопримечательностях. Эти достопримечательности затем сортируются по городам. Затем на моей странице, где пользователи могут просматривать различные города, они могут видеть как количество достопримечательностей в каждом городе (я разобрался с этой частью), так и затем, сколько медиа было размещено на каждом аттракционе (это вот где я застрял).
Пример кода:
class City(models.Model)
name = .modelsCharField...
class Attraction(models.Model)
name = models.CharField...
city = models.ForeignKey(City)
class Media(models.Model)
upload = models.Imagefield
attraction = models.ManyToManyField(Attraction)
Теперь у меня есть страница со списком всех городов, которые я хочу отобразить:
Город № 1 (12 аттракционов, 78 единиц мультимедиа) Я могу узнать количество аттракционов с помощью Attra_set, но не могу понять, как получить общее количество мультимедиа. не могу заставить его работать. Вот строки, которые я пробовал:
qs = City.objects.all()
qs = qs.annotate(pieces_of_media=Subquery(Media.objects.filter(attraction=OuterRef('pk')).values('attraction').annotate(pieces_of_media=Count('pk')).values('pieces_of_media')))
Это не приводит к ошибкам или чему-либо, но возвращаемые числа не точны, поэтому я не уверен, что он на самом деле делает. * Для справки мой окончательный код django будет выглядеть так:
{% for city in cities %}
{{city.name}} - There are {{ city.attraction_set.count }} attractions with {{ ?media_count? }} pieces of associated media.
{% endfor %}
Справка?