【发布时间】:2021-06-10 09:28:08
【问题描述】:
我想用 prefetch_related 对象过滤查询集。此代码有效,但我想更有效地编写它。你有什么想法吗?
queryset = Song.objects.prefetch_related(
Prefetch('harmonies', queryset=Harmony.objects.filter(someQuery)))
for s in queryset:
if s.harmonies.count() > 0:
songs.append(s.id)
queryset = queryset.filter(id__in=songs)
我尝试了类似的方法,但没有成功。
queryset = queryset.annotate(h_count=Count('harmonies')).exclude(h_count=0)
谢谢你的帮助。
【问题讨论】:
-
第二个查询的问题是
someQuery部分吗?你能证明那是什么吗? -
这能回答你的问题吗? Django Query Related Field Count
标签: django performance django-queryset django-filter