码迷,mamicode.com
首页 > 其他好文 > 详细

django中Model表的反向查询

时间:2019-01-22 15:51:35      阅读:361      评论:0      收藏:0      [点我收藏+]

标签:name   创建   first   django   span   之间   ade   pass   代码   

很多时候需要在多张表之间进行跨表查询,这其中外键是必须存在的,而通过外键所处的表的对象进行跨表查询,

称为正向查询。反之,则是反向查询。

正向查询很简单,这里不谈。

主要谈下反向查询。

class Userinfo(models.Model):
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    gender = models.CharField(max_length=32)

class U2U(models.Model):
    b = models.ForeignKey(to=Userinfo,related_name=girls,on_delete=models.CASCADE)  #related_name 创建一个别名,使得反向查询时可以通过这个别名获取对象,如果没有设置这个别名,那就要
  g = models.ForeignKey(to=Userinfo,related_name=boys,on_delete=models.CASCADE)

上面简单的创建了两个示例表。

通过Userinfo对象获取U2U的对象,便是反向查询。以下是简单的代码。

boy = models.Userinfo.objects.filter(id=3).first()  #获取一个id=1的userinfo对象
res =boy.girls.all()  #通过别名‘girls’去获取U2U的对象res
如果没有设置related_name 这个别名,那就要:
res = boy.u2u_set.all()#通过小写的表格名__set查询

 

 

综上,一般在设置外键字段时设置related_name 属性,方便于反向查询操作。

django中Model表的反向查询

标签:name   创建   first   django   span   之间   ade   pass   代码   

原文地址:https://www.cnblogs.com/xiaohuyi/p/10304018.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!