为什么Django ValuesListQuerySet上没有append()方法?

时间:2011-02-03 13:59:41

标签: python django list append

任何有理由在Django ValuesListQueryset上没有附加方法吗?

如果我想添加元素,有没有比先将其转换为列表更好的方法?

1 个答案:

答案 0 :(得分:3)

来自我的评论:

  

django查询集不是列表.......虽然它们仍然支持一些列表操作

同样,当programmersbook评论..... django querysets are lazy时,即在首次访问查询集时执行查询。假设您已经链接了一个用于获取查询集的长过滤器,即使这样,在访问queryset值时,数据库也只会被命中一次。 现在让我们假设您有一个查询集:

sample_set = SampleModel.objects.filter(sample_field='sample_value').filter(another_sample_field='another_sample_value') 

返回的queryset将具有相应的单个sql查询,如

SELECT something FROM sometable 
WHERE sample_field='sample_value' 
AND another_sample_field='another_sample_value'

由于sample_set代表一个SQL语句,因此无法实现sample_set.append(sample_object)之类的功能。