任何有理由在Django ValuesListQueryset上没有附加方法吗?
如果我想添加元素,有没有比先将其转换为列表更好的方法?
答案 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)
之类的功能。