现在我有一个Django查询集,我想通过另一个查询集的结果进行过滤。现在我这样做的(和它的作品):使用Django中另一个查询集的结果过滤查询集
field = 'content_object__pk'
values = other_queryset.values_list(field, flat=True)
objects = queryset.filter(pk__in=values)
其中字段是一个外键的pk
在queryset
的名称。 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 = ...)'(我的想法是否定的)。 – 2014-10-17 19:34:23
是的,你可以把Person.objects.filter(name =“michael”).filter(lastname =“riemann”) – michaelwayman 2014-10-18 05:22:04
这些都是带有字符串过滤器的例子。它不回答如何使用查询集。 – 2014-10-18 14:36:07