现在我有一个Django QuerySet,我想通过另一个QuerySet的结果进行过滤。目前我是这样做的(它可以工作):
field = 'content_object__pk'
values = other_queryset.values_list(field, flat=True)
objects = queryset.filter(pk__in=values)
其中字段是外键的名称,queryset
中的 pk
。ORM 足够智能,可以将上述内容作为一个查询运行。
我试图将其简化为以下形式(即使用对象列表本身进行过滤,而不必明确指定 pk
):
field = 'content_object'
objects = queryset & other_queryset.values_list(field, flat=True)
但是这会产生以下错误:
AssertionError: Cannot combine queries on two different base models.
如何以正确的方式进行此类型的过滤?
.filer(in=...)
吗?(我的想法是否定的)。 - Alex Rothberg