Django - 清理字段,参考Related对象

时间:2015-08-12 13:25:40

标签: python django foreign-key-relationship

我有团体和人,我希望在一个团体中,不能有一个同名的人......但在不同的团体中,这很好......非常简单。我的代码:

class Group(model.Model):
    name = models.CharField() #irrelevant

class Person(models.Model):
    name = models.CharField(max_length=255, unique=False)
    related_group = models.ForeignKey(Group)


    def clean(self):
        if self.related_group:
            for pip in self.related_group.person_set.all():
                if pip.name == self.name:
                    raise ValidationError("Name already exists in this Group")

我收到此错误:

RelatedObjectDoesNotExist at /create/person/  # the url of creating the object

人没有related_group。

我想问题是我需要找到一种方法来引用该组(在表单中) 感谢。

1 个答案:

答案 0 :(得分:2)

您应该可以使用unique_together,然后您不需要使用clean方法进行检查。

class Person(models.Model):
    name = models.CharField(max_length=255, unique=False)
    related_group = models.ForeignKey(BreadcrumbGroup)

    class Meta:
        unique together = [
            ('name',  'related_group'), 
       ]