簡體   English   中英

Django 2多對多關系

[英]Django 2 Many to Many relationships

我正在使用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'

您可以通過以下方式獲取特定用戶的所有組織:

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM