3 回答
TA贡献1802条经验 获得超10个赞
在Django 2.0中,您可以按以下方式定义ForeignKey
mainclient = models.ForeignKey( MainClient, on_delete=model.CASCADE, related_name='+')
该related_name='+'
会取消默认的反向关系,即Django的设置,所以在前面的例子中,你将无法查询使用的配置文件group.profiles.all()
。
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()然后对其进行迭代。
添加回答
举报