django中Model表的反向查询
Posted xiaohuyi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django中Model表的反向查询相关的知识,希望对你有一定的参考价值。
很多时候需要在多张表之间进行跨表查询,这其中外键是必须存在的,而通过外键所处的表的对象进行跨表查询,
称为正向查询。反之,则是反向查询。
正向查询很简单,这里不谈。
主要谈下反向查询。
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表的反向查询的主要内容,如果未能解决你的问题,请参考以下文章