【django学习-18】数据表操作之多表查询

  • 在日常开发只,常常需要对多张数据表同时进行数据查询;多表查询需要在表建立的时候建立表关系才能够实现,下面还是以之前的模型为例。下面是数据表数据

    • 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>]>
posted @ 2022-10-02 20:37  Tony_xiao  阅读(74)  评论(0编辑  收藏  举报