day057 基于对象和基于双下划线的多表查询
单表查询和多表查询的添加与查询
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)
