orm查询

基于对象的查询(子查询)

1.一对一

​ 正向就是建立关系的那个字段在次表中,向没有建立关系的那个字段的表查询

​ 反向则反之

​ 正向:正向查询按字段

author=Author.objects.filter(name='lqz').first().authordetail.phone

​ 反向:反向查询按表名小写

authordetail=AuthorDetail.objects.filter(addr='山东').first().author.name

2.一对多

​ 正向:正向查询按字段

book=Book.objects.filter(name='红楼梦').first().pulish.email

​ 反向:反向按表名小写加_set

Publish.objects.filter(addr='北京').first().book_set.all()

3.多对多

​ 正向:正向查询按字段

#查询红楼梦这本书所有的作者
book=Book.objects.filter(name='红楼梦').first().authors.all()

​ 反向:反向按表名小写加_set

# 查询lqz写的所有书
lqz=Author.objects.filter(name='lqz').first().book_set.all()

多表联查(基于双下划线的查询)

1.一对一

​ 正向:正向查询按字段

ret=Author.objects.filter(name='lqz').values('authordetail__phone')

​ 反向:按表名小写

ret=AuthorDetail.objects.filter(author__name='lqz').values('phone')
原文地址:https://www.cnblogs.com/jianhaozhou/p/9956187.html