【问题标题】:Why no append() method on Django ValuesListQuerySet?为什么 Django ValuesListQuerySet 上没有 append() 方法?
【发布时间】:2011-06-20 16:44:36
【问题描述】:

Django ValuesListQueryset 上没有 append 方法有什么好的理由吗?

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

【问题讨论】:

  • 你到底想做什么,为什么要添加元素?
  • 我猜是因为查询很懒?
  • 是的,但是为什么要添加元素呢? :)
  • django 查询集不是列表......虽然它们仍然支持一些列表操作

标签: python django list append


【解决方案1】:

来自我的评论:

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

正如程序员手册所评论的那样.....django querysets are lazy 即在第一次访问查询集时执行查询。假设您已经链接了一个长过滤器来获取查询集,即使这样,在访问查询集值时,数据库也只会被命中一次。 现在让我们说你有一个查询集:

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

返回的查询集将有一个对应的单个 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) 这样的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-29
    • 2020-11-10
    • 2011-12-25
    • 2020-07-20
    • 2019-12-26
    • 2011-08-22
    • 2016-04-03
    • 1970-01-01
    相关资源
    最近更新 更多