1

我有以下模型:

class Category(models.Model):
    name = models.CharField(max_length=255)
    parent = models.ForeignKey('self', related_name='children')

我的问题是如何防止模型引用自身(同一个对象)。对象应该只能指向其他类别但不能指向自身(“狗”可以有父“动物”但不能有父“狗”)

4

1 回答 1

2

您可以覆盖该save方法以引发异常:

def save(self, *args, **kwargs):
    if self.parent and self.parent.name == self.name:
        raise ValidationError('You can\'t have yourself as a parent!')
    return super(Category, self).save(*args, **kwargs)
于 2017-04-09T20:58:20.363 回答