Django中Queryset总结

 

1.查看 Django queryset 执行的 SQL

Projects.objects.all().query

2.values_list 获取元组形式结果

Projects.objects.values_list('name', 'status')

如果只需一个字段,可以用flat=True
Projects.objects.values_list('name', flat=True)

3. values 获取字典形式的结果

Projects.objects.values_list('name', 'status')


注意:

1. values_list 和 values 返回的并不是真正的 列表 或 字典,也是 queryset,他们也是 lazy evaluation 的(惰性评估,通俗地说,就是用的时候才真正的去数据库查)

2. 如果查询后没有使用,在数据库更新后再使用,你发现得到在是新内容!!!如果想要旧内容保持着,数据库更新后不要变,可以 list 一下

3. 如果只是遍历这些结果,没有必要 list 它们转成列表(浪费内存,数据量大的时候要更谨慎!!!)


4. extra 实现 别名,条件,排序等

extra 中可实现别名,条件,排序等,后面两个用 filter, exclude 一般都能实现,排序用 order_by 也能实现。我们主要看一下别名这个

Projects.objects.all().extra(select={'project_name': 'name'})

——————————————
参考文档:
https://hupingzhi.cn/post/24/
原文地址:https://www.cnblogs.com/hupingzhi/p/12152625.html