ORM 正反向查询

ORM 正反向查询

在 ORM 查询中,一般分为正向查询和反向查询。至于什么是正向查询和反向查询,还要从表关系说起。
举个简单的例子,就拿图书和出版社来说,一般一个图书只有一个出版社,但是一个出版社一般出版有多个图书,外键关系一般建立在多的一侧,也就是说,外键关系是建立在图书的表模型中的。
image
而正向查询就是从多的一侧出发,即从图书表出发去查找。举例如下:查找出版社为出版社1的图书。

obj = models.Book.objects.filter(publisher__name='出版社1')

反向查询则是与之相反,从少的一次出发进行查找。反向查询操作如下:

obj = models.Publisher.objects.get(id=1)  # 假设出版社1的id为1
obj.book_set.all()
  • 方式一
    image
  • 方式二
    image
    当设置了related_name以后就无法使用多的一侧的表名小写_set这个用法。因为多的一侧的表名小写_set为默认的,当设置了related_name以后就会覆盖掉多的一侧的表名小写_set这个用法法导致无法使用。related_name就是为了方便反向查询而设置的。
posted @ 2021-03-19 17:34  AKA绒滑服贵  阅读(401)  评论(0编辑  收藏  举报