Django многократные много-много полей с одинаковыми отношениями на модели - PullRequest
0 голосов
/ 26 марта 2019

Может ли одно и то же отношение "многие ко многим" существовать в модели несколько раз (с разными именами полей для поля)? Я не могу заставить это работать, когда выполняю миграцию, поскольку python жалуется на уже существующие отношения, когда я пытаюсь продублировать его под другим именем.

Моя модель сейчас выглядит так:

class UserLocations(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    locations = models.ManyToManyField(Locations, related_name="users")

Я хочу добавить дополнительное поле, называемое адресом электронной почты, которое совпадает с полем местоположений. Так я бы просто дал ему другое имя?

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

для вашего примера это будет:

class UserLocations(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    locations = models.ManyToManyField(Locations, related_name="locations")
    more_locations = models.ManyToManyField(Locations, related_name="more_locations")

Более подробная информация здесь: https://docs.djangoproject.com/en/2.1/topics/db/models/#be-careful-with-related-name-and-related-query-name

0 голосов
/ 26 марта 2019

Да, вы можете иметь несколько manytomany отношений с одной и той же моделью.Вы должны иметь разные related_name для обоих для обратного доступа.Вот так

class MyModel(models.Model):
    relation_a = models.ManyToManyField(AnotherModel, related_name='rev_relation_a')
    relation_b = models.ManyToManyField(AnotherModel, related_name='rev_relation_b')

Вот почему django жалуется, потому что вы должны явно определить отдельные связанные имена для обоих.

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