Django ORM queryset object 解释(子查询和join连表查询的结果)

Posted ajaxa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django ORM queryset object 解释(子查询和join连表查询的结果)相关的知识,希望对你有一定的参考价值。

#下面两种是基于QuerySet查询  也就是说SQL中用的jion连表的方式查询
books = models.UserInfo.objects.all()

print(type(books)) ---> <class ‘django.db.models.query.QuerySet‘> 查询出来是一个对象QuerySey

取值 print(books.values())



books = models.UserInfo.objects.filter()
print(type(books)) ---> <class ‘django.db.models.query.QuerySet‘> 查询出来一个QureySet

取值 print(books.values())
 
总结:books查询来了结果是queryset,然后在这个基础上面查询作者的名字,也就是跨表查询,这时候就需要用values去获取另外一个表的数据.
怎么获取呢? 就通过books.values("user__name") user是UserInfo表字段的名称 __代表双下划线




#基于对象的查询 也就是说SQL中用的子查询,就是slecte 里面套了slecte查询方式
books = models.UserInfo.objects.first()
print(type(books)) ---> <class ‘app.models.UserInfo‘> 查询出来是一个对象
取值 print(books.password)

总结:什么是基于对象? 就是说books对象已经拿到了,相当于就是表中的name这个对象已经查询到了,然后对象点属性取值就可以了
可以用点的方式获取数据 books.name 或者 book.age 等



















以上是关于Django ORM queryset object 解释(子查询和join连表查询的结果)的主要内容,如果未能解决你的问题,请参考以下文章

Django - 原始 SQL 查询或 Django QuerySet ORM

Django ORM返回QuerySets的某些函数

Django ORM 对 QuerySet 的迭代真的很慢

Python - Django - ORM QuerySet 方法补充

Django ORM查询总结

Django学习手册 - ORM 数据表操作