Как ссылаться на несколько иностранных ключей из модели - PullRequest
0 голосов
/ 25 мая 2019

Я хотел бы сослаться на 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 ]

1 голос
/ 25 мая 2019

Нет необходимости иметь владельца группы в учетной записи после добавления организации в качестве внешнего ключа. Вы должны удалить строку ниже со счета:

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

Имя группы можно получить как:

account.org.owner

И имя группы должно быть доступно как

account.org.name
0 голосов
/ 25 мая 2019

Похоже, что вы пытаетесь сделать, это объединить учетную запись с группой, используя условие на двух полях.Я бы посоветовал вам поискать, как использовать внешний ключ двух полей, а не два внешних ключа.Другой популярный способ решения этой проблемы состоит в том, чтобы дать групповой модели сгенерированный первичный ключ и иметь group_id в учетной записи для отношения.Затем вы можете удалить (org, org_owner) из аккаунта, если он не используется для других целей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...