【发布时间】:2013-06-06 03:31:05
【问题描述】:
根据docs,在调用 list() 时会评估查询集。
有没有办法用查询集而不是模型对象附加列表/元组?列表/元组上的每个操作都调用 list() 吗?
例如:
foo= Foo.objects.all()
bar = Bar.objects.filter(enabled=True)
my_list = []
my_list.append(foo) <-- evaluates
my_list.extend(foo) <-- evaluates
my_tuple = ()
my_tuple = my_tuple + (foo,) <-- evaluates
# so I'm getting
[<Foo: ModelDescription>,<Foo: ModelDescription>,<Bar: ModelDescription>]
#but I want
[<Queryset: Foo>, <Queryset:Bar>]
【问题讨论】:
-
您确定第一个和第三个评估查询吗?他们不应该。
-
我认为他们只在活动解释器外壳中进行评估。
-
是的,他们做到了。将代码放在视图函数中解决了这个问题:)