如何从模型中引用多个外键

时间:2019-05-25 19:49:31

标签: python django

我想将一个模型的2个单独字段引用到另一个模型中。 从下面的代码,我有: 具有以下字段的第一个模型-名称,所有者和电子邮件地址

在第二个模型中,我想在第二个模型中使用上述名称和所有者的数据,但将它们重命名为org(名称形式组)和org_owner(组的所有者)

我已经使用related_name尝试了以下代码。但是我在两个领域都得到了相同的价值。这是从org和org_owner字段中的组获取​​名称字段。不是我想要的。

class group(models.Model):
    name = models.CharField(max_length=100, unique=True, blank=False)
    owner = models.CharField(max_length=100, blank=False)
    email = models.EmailField(max_length=100, blank=False)


class account(models.Model):
    org = models.ForeignKey('group', on_delete=models.SET_NULL, null=True, related_name='org')
    org_owner = models.ForeignKey('group', on_delete=models.SET_NULL, null=True, related_name='org_owner')
    account = models.CharField(max_length=100, blank=False, unique=True)

预期结果应该是:

account.org = group.name  account.org_owner = group.owner

2 个答案:

答案 0 :(得分:1)

将组织添加为外键后,无需在帐户中拥有组所有者。 您应该从帐户中删除以下行:

org_owner = models.ForeignKey('group', on_delete=models.SET_NULL, null=True, related_name='org_owner')

可以通过以下方式访问组名:

account.org.owner

组名应为

account.org.name

答案 1 :(得分:0)

似乎您要执行的操作是使用两个字段上的条件将帐户加入组。我建议您搜索如何使用两个字段的外键而不是使用两个外键。解决此问题的另一种流行方式是为组模型提供一个生成的主键,并在该关系的帐户中具有一个group_id。如果没有其他用途,则可以从帐户中删除(org,org_owner)。