django中多对多字段的自定义模型验证

时间:2017-08-15 11:57:25

标签: django validation django-models

您好我有这样的模特:

class Team(models.Model):
    owner = models.ForeignKey(User)
    members = models.ManyToManyField(User)

现在一个所有者可以拥有多个团队,但特定成员只能属于一个团队。因此,假设有一个成员John的团队,用户无法再次创建具有相同成员的团队。

为此,我正在尝试添加自定义模型字段验证:

def clean_fields(self, exclude=None):
        super(MentorTeam, self).clean_fields(exclude=exclude)
        self.candidates # This returns error because the team instance is not saved yet. 

我该如何进行验证?

1 个答案:

答案 0 :(得分:0)

根据定义,ManyToMany关系意味着成员可以属于许多团队。

你应该做的是从Team模型对User做一个ForeignKey:

class User(models.Model):
    team = models.ForeignKey(Team, related_name='members')
    ...

希望它有所帮助!