【发布时间】:2021-08-03 04:11:26
【问题描述】:
我正在使用 Django 3.2 和 django-taggit 1.4
我有一个这样的模型:
class Meal(models.Model):
# some fields
is_cooked = models.Boolean()
tags = TaggitManager()
我正在尝试生成一个以标签名称和标签出现次数为键的字典 - 但仅适用于将 is_cooked 标志设置为 True 的餐点。
我尝试了以下方法:
pks = list(Meal.objects.filter(is_cooked=True))
ct = ContentType.objects.get_for_model(Meal)
b=TaggedItem.objects.filter(content_type=ct, object_id__in=pks).annotate(num_times=Count('tag__name'))
这并没有返回预期的结果(而且我预计由于查找次数过多,它可能会多次访问数据库 - 但我不想因过早的优化问题而分心。
我做错了什么,如何获得每个标签的标签数量?
[[编辑]]
以下是运行上述查询的结果:
<QuerySet [<TaggedItem: Meal One tagged with rice>, <TaggedItem: Meal Two tagged with chips>, <TaggedItem: Meal Three tagged with curry>, <TaggedItem: Meal Four tagged with royalty>, <TaggedItem: Meal Five tagged with rice>, <TaggedItem: Meal Six tagged with chips>]>
>>> b[0].num_times
1
【问题讨论】:
-
嗨,什么是意外输出?
-
@jspcal:请参阅编辑
标签: python django django-queryset django-taggit