Джанго 2 Отношения ко многим ко многим - PullRequest
0 голосов
/ 08 января 2019

Я работаю над проектом с использованием Python (3.7) и Django (2.1), в котором мне нужно построить отношения между пользователями и организациями.

Я использую модель пользователя Django по умолчанию и модель профиля для добавления дополнительной информации пользователям.

Многие пользователи могут присоединиться к организации, а Организация может иметь много членов, пользователь может создать Организацию, эти способы поведения, которые мне нужно реализовать, в соответствии с моим пониманием, нам необходимо построить модель отношений ManyToMany для организаций, но не знаю, как использовать это отношение для отображения информации, например, для отображения организаций пользователя на странице его профиля.

Вот мои модели:

class Organization(models.Model):
    name = models.CharField(max_length=255, blank=False)
    users = models.ManyToManyField(User, related_name='members', null=True)

    def __str__(self):
        return self.name

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    image = models.ImageField(default='media/default.jpg', upload_to='profile_pics')
    goals = MultiSelectField(choices=goals_choices, default='')

    def __str__(self):
        return f'{self.user.username} Profile'

1 Ответ

0 голосов
/ 08 января 2019

Вы можете получить все организации конкретного пользователя по:

my_user.members.all()

Если вы хотите получить доступ из профиля:

my_profile.user.members.all()

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

my_user.organization_set.all()
my_profile.user.organization_set.all()

Для организации вы можете получить всех пользователей по:

my_org.users.all()
...