【发布时间】:2015-10-10 17:50:00
【问题描述】:
我有这些模型
class BlogEntry(models.Model):
tags = models.ManyToMany(Tag, ...)
...
class Tag(models.Model):
...
和标签的子集:
tag_list = list(*some tag objects*) # can refactor to queryset
我需要获取标签列表中每个 BlogEntry 的标签数量,如下所示:
# Non-working code ahead
BlogEntry.objects.annotate(match=Count(tags__in=tag_list))
我已经让这段代码运行得很好
# working code ahead
for entry in BlogEntry.objects.all():
match = len(set(entry.tags.all()).intersection(tag_list))
但我觉得在 python 中而不是在数据库中进行计数和相交可能会导致性能问题。
【问题讨论】:
标签: python django django-orm