【发布时间】:2014-06-30 10:38:40
【问题描述】:
如果我有一个父模型和一个子模型,那么如何列出父对象的 所有 个子对象,并为每个子对象设置一个 已过滤 个计数,什么时候列出?
举个例子,假设我们有这些模型:
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)
然后我们有一个 Category 的 DetailView,其中列出了该 Category 的所有 SubCatoegories。在这个列表中,我们希望对每个 SubCategory 条目进行计数,它包含 also 属于某个标签的文章的数量(即,不计数 all em> 该子类别的文章,这似乎更容易构建)。像这样的:
{% 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()有什么问题?
-
1.不,只有 sub_category 的文章。 2. 我认为您不能在模板中进行过滤。
标签: python django django-models django-views django-filter