我在Django中有两个QuerySet:
a = [<Character: Character object>, <Character: Character object>, <Character: Character object>]
b = [<Entity: Entity object>, <Entity: Entity object>, <Entity: Entity object>, <Entity: Entity object>, <Entity: Entity object>, <Entity: Entity object>]
我想避免多个for
循环检查Character.someattr
是否与Entity.someattr
相同,并返回包含Character
个对象的列表,那么最简单的是什么这样做的方法?
答案 0 :(得分:3)
我认为最简单的方法是过滤查询集。这种方式可能包含其他查询,但速度必须快得多,尤其是对于大数据。
attrs_list = Entity.objects.filter(**filters).distinct().values_list('someattr', flat=True)
a = Character.objects.filter(someotherattr__in=attrs_list)