猿问

Django什么是反向关系?

有人可以告诉我反向关系是什么意思吗?我已经开始使用Django,并且在文档的很多地方,我都提到了“反向关系”。到底是什么意思?为什么有用?参考此帖子,它与related_name有什么关系?


炎炎设计
浏览 334回答 3
3回答

守候你守候我

在Django 2.0中,您可以按以下方式定义ForeignKeymainclient = models.ForeignKey( MainClient, on_delete=model.CASCADE, related_name='+')该related_name='+'会取消默认的反向关系,即Django的设置,所以在前面的例子中,你将无法查询使用的配置文件group.profiles.all()。

偶然的你

为了获得清晰的图片,您可以假定当我们使用反向关系时,它会在引用的模型中添加一个额外的字段。例如: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()然后对其进行迭代。
随时随地看视频慕课网APP

相关分类

Python
我要回答