-
在日常开发只,常常需要对多张数据表同时进行数据查询;多表查询需要在表建立的时候建立表关系才能够实现,下面还是以之前的模型为例。下面是数据表数据
- book表的外键字段publisher
-
正向查询
#查询模型Book某行数据对应的b
b = Book.objects.filter(id=1).first()
#b.publisher代表外键publisher
b.publisher.website
- 反向查询
1、先查询Publisher某行数据对应的p
p = Publisher.objects.filter(id=1).first()
方法1:
#book_set的返回值为queryset对象,即查询结果
#模型Book的的外键字段publisher不能设置参数related_name
b = p.book_set.first()
b.title
方法2:
#由模型Book的外键字段publisher的参数related_name实现
#必须设置related_name参数才能实现
#将外键字段的related_name设置为publisher
b = p.publisher.first()
b.title
- 在查询条件(filter,get)中使用正向反向查询
#name__name,前面的name是模型Book的字段name
#后面的name是模型Publisher的字段name,两者使用双下划线连接
>>> b = Book.objects.filter(publisher_id__id='1')
>>> b
<QuerySet [<Book: python>, <Book: linux>]>
标签:publisher,name,18,外键,django,数据表,Book,查询
From: https://www.cnblogs.com/xwltest/p/16749409.html