单表查询和多表查询的添加与查询

day057 基于对象和基于双下划线的多表查询 随笔 第1张    day057 基于对象和基于双下划线的多表查询 随笔 第2张    day057 基于对象和基于双下划线的多表查询 随笔 第3张  day057 基于对象和基于双下划线的多表查询 随笔 第4张       day057 基于对象和基于双下划线的多表查询 随笔 第5张

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

上述关系:author-authordetail是一对一的关系(外键在author上名为authors),  book-publish是一对多的关系(外键在book上名为publisher), book-author是多对多的关系(外键在book上名为books), 其中book和author是通过第三张表book_author建立的关系.

1.查询

一对一查询:(onetoonefield(to=与那个表进行关联,to_field=与那个字段进行关联)) 

设置级联删除(to_delete=models.CASCADE)

正向查询:   查询小可爱的电话号码

models.author.objects.filter(name='小可爱').authors.tel
models.author.objects.filter(name='小可爱').values(authors__tel)

 反向查询: 查询电话号码为443355的作者姓名

models.authordetail.objects.filter(tel='443355').author.name

 models.authordetail.objects.filter(authors__tel=443355).values(name)

一对多查询:(foreignkey(to=与那个表进行关联))

正向查询: 查询书名为三国演义的出版社的地址

models.book.objects.filter(title='三国演义').publisher.addr

 models.book.objects.filter(title='三国演义').values(publisher__addr)

 反向查询: 查询山东大学出版社出版的书的价格

models.publish.objects.filter(name='山东大学出版社').book_set.all().values(price)

 models.publish.objects.filter(publisher__name='山东大学出版社').values(price)

多对多查询:( manytomanyfield(to=与那个表进行关联) )

正向查询: 查询天龙八部的作者

models.book.objects.filter(title='天龙八部').authors.all().values(name)

  models.book.objects.filter(title='天龙八部').values(authors__name)

反向查询: 查询彭于晏出过的书

models.author.objects.filter(name='彭于晏').books_set.all().values(title)

 models.book.objects.filter(authors__name='彭于晏').values(title)

 

 

 

 

 

 

 

 

 

 

 

  

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄