Skip to main content
 首页 » 编程设计

python之如何使用 ForeignKey ('self' ) 获取字段而不可能链接到同一条目

2025年05月04日9emanlee

我在构建一个自身带有外键的模型时遇到了一个小问题。

举个例子:

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") 

这将作为对象验证的第二步调用,并将阻止将对象插入数据库。