Django 自引用模型过滤 ForeignKey

1 投票
1 回答
1148 浏览
提问于 2025-04-18 02:41

假设我在Django中有以下模型:

class Category(models.Model):
    parent = models.ForeignKey('self', null=True, blank=True)

有没有办法防止引用同一个类别?因为Django在管理后台生成了一个选择框,我可以选择同一个类别作为父类别。有没有什么方法可以在管理后台过滤这个选择框?

1 个回答

2

使用 ForeignKey.limit_choices_to - 你可以在这里查看 相关文档

你提供的代码片段不够完整,所以我无法准确判断你具体的情况。不过我猜在 parent 这个外键上,你可能想要限制选择的选项,使用一个 lambda 函数来检查类别的名称是否和引用的名称相同。

在这里你可能需要用到一个 lambda 函数,而不是简单的一个表达式。

撰写回答