Django模型自引用:防止引用自身

时间:2017-04-09 16:12:48

标签: django self-reference self-referencing-table

我有以下型号:

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

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

1 个答案:

答案 0 :(得分:1)

您可以覆盖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)