Django 2 多对多关系
Django 2 Many to Many relationships
我正在使用 Python(3.7) 和 Django(2.1) 开发一个项目,我需要在其中建立用户和组织之间的关系。
我正在使用默认的 Django 用户模型和配置文件模型来向用户添加额外信息。
很多用户可以加入一个组织,一个组织可以有很多成员,一个用户可以创建一个组织,这些行为我需要实现,根据我的理解我们需要为组织模型建立多对多关系,但是不要知道如何使用这种关系来显示信息,例如在他的个人资料页面上显示用户的组织。
这是我的模型:
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()
我正在使用 Python(3.7) 和 Django(2.1) 开发一个项目,我需要在其中建立用户和组织之间的关系。
我正在使用默认的 Django 用户模型和配置文件模型来向用户添加额外信息。
很多用户可以加入一个组织,一个组织可以有很多成员,一个用户可以创建一个组织,这些行为我需要实现,根据我的理解我们需要为组织模型建立多对多关系,但是不要知道如何使用这种关系来显示信息,例如在他的个人资料页面上显示用户的组织。
这是我的模型:
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()