为了账号安全,请及时绑定邮箱和手机立即绑定

Django什么是反向关系?

Django什么是反向关系?

炎炎设计 2021-03-29 11:11:44
有人可以告诉我反向关系是什么意思吗?我已经开始使用Django,并且在文档的很多地方,我都提到了“反向关系”。到底是什么意思?为什么有用?参考此帖子,它与related_name有什么关系?
查看完整描述

3 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

在Django 2.0中,您可以按以下方式定义ForeignKey

mainclient = models.ForeignKey( MainClient, on_delete=model.CASCADE, related_name='+')

related_name='+'会取消默认的反向关系,即Django的设置,所以在前面的例子中,你将无法查询使用的配置文件group.profiles.all()


查看完整回答
反对 回复 2021-04-06
?
偶然的你

TA贡献1841条经验 获得超3个赞

为了获得清晰的图片,您可以假定当我们使用反向关系时,它会在引用的模型中添加一个额外的字段。


例如:


class Employee(models.Model):

           name = models.CharField()

           email = models.EmailField()

class Salary(models.Model):

           amount = models.IntegerField()

           employee = models.ForeignKey(Employee, on_delete=models.CASCADE, related_name='salary')

因此,在Salary模型中使用related_name之后,现在您可以假定Employee模型将再有一个字段“ salary”


例如:


姓名,


电子邮件,


薪水


要找到员工,我们可以简单地通过以下方式查询:


e = Employee.objects.filter(某些过滤器).first()


要检查薪水,只需简单地通过编写e.salary进行检查(现在我们可以在员工模型中使用薪水作为属性或字段)。这将为您提供该员工的薪水实例。现在您可以通过写e.salary.amount来找到金额。这会给你那名员工的薪水。


在多对多关系的情况下,我们可以使用.all()然后对其进行迭代。


查看完整回答
反对 回复 2021-04-06
  • 3 回答
  • 0 关注
  • 333 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信