Если у меня есть родительское модель и модель ребенка, как я могу потом перечислить всех дочерних объекты родительского объекта, и имеет отфильтрованного счетчика для каждого дочернего объекта, при перечислении их?Получить рассчитывать на отфильтрованных подзапросах в шаблоне
Для примера, предположим, у нас есть эти модели:
class Category(models.Model):
...
class SubCategory(models.Model):
category = models.ForeignKey(Category)
....
class Tag(models.Model):
....
class Article(models.Model)
sub_category = models.ForeignKey(SubCategory)
tag = models.ForeignKey(Tag)
Тогда мы имеем DetailView для категории, в которой все SubCatoegories для этой категории перечислены. В этом списке мы хотим подсчитать каждую запись в подкатегории, по количеству статей, которые она содержит, что также имеет определенный тег (то есть, не число на все статей этой подкатегории, которая кажется много более тривиально строить). Что-то вроде этого:
{% for sub_category in category.sub_category_set.all %}
{{ sub_category.name }} -- {{ sub_category.articles_set.filter(tag='xyz').all|length }}
Я предполагаю, что это должно быть сделано в views.py и/или models.py каким-то образом, в конце концов. Я просто написал это так, чтобы уточнить, что я имею в виду. Итак, как я могу добиться чего-то подобного?
Два вопроса: 1. имеет sub_category FK в статью? 2. Что не так с sub_category.articles_set.filter (tag = 'xyz'). Count()? – zymud
1. Нет, только статья для sub_category. 2. Я не думаю, что вы можете делать фильтрацию в шаблонах. –