我在构建一个自身带有外键的模型时遇到了一个小问题。
举个例子:
class Example (model.Model):
parent = models.ForeignKey('self', null=True, blank=True)
# and some other fields
在管理面板中创建一个新条目并进入此示例以编辑一些内容后,我意识到我可以将父级设置为当前条目。但这不是我想要通过 ForeignKey 和与自身的关系得到的结果。
是否可以禁止指向自身的链接?
也许使用具有正确选择的整数字段会更好,但我不确定如何以一种平滑且类似于 Python 的方式实现这一点。
请您参考如下方法:
一种方法是覆盖模型的 clean 方法
class Example(model.Model):
#...
def clean(self):
if self.parent.id == self.id:
raise ValidationError("no self referential models")
这将作为对象验证的第二步调用,并将阻止将对象插入数据库。
