标签:属性 orm 目录 定位 手机号 lap 关联查询 跨表 set
正向查询:在有关联字段的表向被关联的表查询
查询名为 python开天辟地 这本书的出版社的邮箱
book_obj = models.Book.objects.filter(title="python开天辟地").first()
print(book_obj.publish.email)
查询名为朝阳门的出版社出版过的所有书籍名称
publish_obj = models.Publish.objects.filter(name="朝阳门出版社").first()
for book in publish_obj.book_set.all():
print(book.title)
book_obj = models.Book.objects.filter(title="python开天辟地").first()
for author in book_obj.author.all():
print(author.name,author.age)
查询作者呲花出版的所有书籍的名字
author_obj = models.Author.objects.filter(name="呲花").first()
for book in author_obj.book_set.all():
print(book.title)
查询作者狗城的手机号
author_obj = models.Author.objects.filter(name="狗城").first()
print(author_obj.authorDetail.telephone)
查询手机号是17777777777的作者是谁(一对一反向查询,直接表名就可以,不用跟_set)
authordetail_obj = models.AuthorDetail.objects.filter(telephone=17777777777).first()
print(authordetail_obj.author.name)
查询书名python开天辟地这本书的出版社的邮箱
models.Book.objects.filter(title="python开天辟地").values("publish__email")
查询名为朝阳门的出版社出版过的所有书籍名称
方式一:
book_list = models.Publish.objects.filter(name="朝阳门出版社").values("book__title")
for book in book_list:
print(book["book__title"])
方式二:
book_list = models.Book.objects.filter(publish__name="朝阳门出版社").values("title") # 过滤所有书籍里出版社的名字
for book in book_list:
print(book["title"])
这种多表关联查询,首先定位基表(book),然后通过跨表双下划线,组合成一张大表,通过条件筛选
print(models.Book.objects.filter(author__authorDetail__telephone__startswith="177").values("title", "publish__name"))
标签:属性 orm 目录 定位 手机号 lap 关联查询 跨表 set
原文地址:https://www.cnblogs.com/ligiao/p/11159273.html