如何筛选django taggit顶部标记
假设您有一个数据库,其中用户对象在Djano应用程序后面运行 您需要使用如何筛选django taggit顶部标记,django,filtering,django-taggit,Django,Filtering,Django Taggit,假设您有一个数据库,其中用户对象在Djano应用程序后面运行 您需要使用django-taggit标记用户对象,以便使用一些方便的筛选检索子组 此外,您还有一个仪表板,希望在其中显示有关已使用标记的有趣统计信息,以收集有关用户中存在的子组的一些信息 如何访问和显示有关顶部X标记的信息 在Django应用程序中使用 如何仅访问已筛选的文件的顶部X个标记 用户对象的子组 虽然已经有很多帖子描述了类似的问题,但其中大多数都描述了解决方法或包含了分散的信息 为了让这些信息更容易找到,我将发布一个简单的摘
django-taggit
标记用户对象,以便使用一些方便的筛选检索子组
此外,您还有一个仪表板,希望在其中显示有关已使用标记的有趣统计信息,以收集有关用户中存在的子组的一些信息
虽然已经有很多帖子描述了类似的问题,但其中大多数都描述了解决方法或包含了分散的信息 为了让这些信息更容易找到,我将发布一个简单的摘要,介绍如何使用官方支持但官方文档中未提供的
django taggit
功能实现一些基本功能
如何访问和显示有关顶部X标记的信息
在Django应用程序中使用
为了访问和显示Django应用程序中使用的顶级标签的信息,您可以使用内置功能most_common
,如下所示:
top_tags = User.tag.most_common()
这将返回一个queryset,其中包含从最常用的降序排列的用户实例上放置的所有标记。
假设我们有3个标签:[“蔬菜”、“水果”、“糖果”]
,10个用户有水果
标签,4个用户有蔬菜
标签,只有1个用户有糖果
标签,返回的订单将是:[“水果”、“蔬菜”、“糖果”
访问有关返回的标记的更多信息可以这样做:
for tag in top_tags:
print(tag.name) #the name of the tag
print(tag.num_times) # the number of User objects tagged
此外,如果您只对前3个标签感兴趣,那么您可以
按如下方式访问它们:
top_tags = User.tag.most_common()[:3]
可以将3替换为X,其中X是要返回的项目数
如何仅访问已筛选的文件的顶部X个标记 用户对象的子组 自2016年7月12日起,
most_common()
函数实际上有一些附加参数,您可以指定。首先,您可以指定一个min\u count
,它过滤掉低于某个阈值的顶部标记。作为使用上一示例中的标记的说明:
top_tags = User.tag.most_common()[:3]
返回前面指定的所有三个标记,但使用
top_tags = User.tag.most_common(min_count=2)[:3]
仅返回[“水果”、“蔬菜”]
这是因为只有1个用户对象被标记为糖果
,这意味着它低于最小计数
的2
可以提供给最常见的的另一个参数是extra\u filters
,这使您能够提供一个对象,其中包含要根据其筛选标记的其他筛选值
一个使用示例是:
filtered_users = User.objects.filter(age=20, is_delete=False)
top_tags = User.tag.most_common(
min_count=1, extra_filters={
'user__in': filtered_users
}
)
在这里,我们创建一个用户对象的过滤查询集,然后将其提供给extra\u filters
参数,以将标记搜索限制到特定的子组