我知道您可以预取单个过滤查询集,例如.
Parent.objects.all()
.prefetch_related(
Prefetch("child_set", queryset=Child.objects.filter(type="A")
)
这样,运行obj.child_set.all().count()
将返回相关A
Child
中的count
,而无需运行另一个查询.
但是如果我也想数到B
呢?因此,下面将需要2个查询-我可以以某种方式预取它们吗?
return {
"a_count": obj.log_set.filter(type="A").all().count(),
"b_count": obj.log_set.filter(type="B").all().count(),
}
Edit:
Parent.objects.all()
.prefetch_related(
Prefetch("child_set", queryset=Child.objects.filter(type="A"),
Prefetch("child_set", queryset=Child.objects.filter(type="B")
)
但当我try 访问该对象时,会出现以下错误:
{
"detail": "Not found."
}