模型之间的Django关系

时间:2018-03-14 18:19:16

标签: python django

我目前在我的模型中拥有的是:

class Project(models.Model):
    project_name = models.CharField(max_length=255, unique=True, blank=False)
    def __str__(self):
        return str(self.project_name)


class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)  
    role = models.CharField(choices=ROLE_CHOICES, max_length=255, default='Agent')

现在我的问题是:用户应该能够拥有多个项目 - 所以我显然不能在Profile-Model中使用OneToOne-Field。

后来我想用它来举例说明只显示与他参与的项目相关的用户新闻。

使这成为可能的最佳策略是什么?任何意见都非常感谢。

1 个答案:

答案 0 :(得分:1)

在项目中使用ManyToMany。

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)  
    role = models.CharField(choices=ROLE_CHOICES, max_length=255, default='Agent')
    project = models.ManyToManyField(Project)

这样一个配置文件可以拥有他/她想要的项目数量

在您的视图中,您可以使用此字段根据项目

进行过滤