Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 从标记中过滤出私有页面_Django_Wagtail_Django Taggit - Fatal编程技术网

Django 从标记中过滤出私有页面

Django 从标记中过滤出私有页面,django,wagtail,django-taggit,Django,Wagtail,Django Taggit,我最近在我的Wagtail支持的网站上制作了一个标签云,但我遇到了一个问题,一些标签(在我的网站中称为“主题”)中只出现了私人文章/页面 到目前为止,我做了类似的事情来获取每个标签中的文章数量,如果没有,则将其过滤掉: topics\u with\u articles=Topic.objects.annotate(num\u articles=models.Count(“articlepage”)).filter(num\u articles\uu gt=0) 过滤的主题=包含文章的主题。按(“

我最近在我的Wagtail支持的网站上制作了一个标签云,但我遇到了一个问题,一些标签(在我的网站中称为“主题”)中只出现了私人文章/页面

到目前为止,我做了类似的事情来获取每个标签中的文章数量,如果没有,则将其过滤掉:

topics\u with\u articles=Topic.objects.annotate(num\u articles=models.Count(“articlepage”)).filter(num\u articles\uu gt=0)
过滤的主题=包含文章的主题。按(“-num\u文章”)排序。值(“名称”、“slug”、“num\u文章”)
我的模型设置如下:

从modelcluster.models导入ParentalManyToManyField、ParentalKey
从modelcluster.tags导入ClusterTaggableManager
从taggit.models导入标记,TaggedItemBase
@寄存器代码段
课程主题(标签):
类元:
排序=[“slug”]
proxy=True
详细名称=“主题”
详细名称复数=“主题”
课堂文章主题(TaggedItemBase):
content\u object=ParentalKey(“ArticlePage”,related\u name=“article\u topics”)
课堂文章第页(第页):
topics=ClusterTaggableManager(通过=“articles.ArticleTopic”,blank=True)
我找不到一个简单的解决方案来实现这一点,那么我该怎么做呢?

有人在建议的on taggit的undocumented
最常见的
函数中,所以我应用了类似这样的解决方案:

articles=ArticlePage.objects.live().public().order\u by(“-date”)
带有过滤文章的主题=ArticlePage.topics.most\u常见(最小计数=1,额外过滤器={'ArticlePage\uu in':articles})
这将通过比较
文章
文章.objects
查询集,过滤掉主题中的所有私人和草稿文章。通过添加
min\u count=1
参数,所有没有文章的主题也会被过滤掉

作为额外的奖励,taggit在
topics\u的
num\u times
注释中添加了过滤文章
queryset,这样我就不必自己做了