You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django自引用模型创建可行性及‘BusinessUnit未定义’报错咨询

Django自引用模型创建及报错解决

当然可以在Django中创建自引用模型,你遇到的"BusinessUnit" is not defined报错,是因为定义ForeignKey时,BusinessUnit类尚未完成定义。

解决这个问题有两种常用方式:

  • 使用字符串形式引用模型类名
    直接将模型类名以字符串传入ForeignKey,Django会在整个类加载完成后再解析这个引用。同时要注意添加Django 2.0+要求的必填参数on_delete,如果允许顶级节点无父级,还可以设置null=True和blank=True:

    class BusinessUnit(models.Model):
        class Meta:
            db_table = 'carecode_business_unit'
        parent_business_unit = models.ForeignKey('BusinessUnit', on_delete=models.CASCADE, null=True, blank=True)
    
  • 使用'self'代替类名
    也可以用字符串'self'来指代当前模型类,效果和直接写类名一致,代码更简洁:

    class BusinessUnit(models.Model):
        class Meta:
            db_table = 'carecode_business_unit'
        parent_business_unit = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
    

自引用模型常用于实现树形结构数据,比如部门层级、评论回复、分类目录等场景。

内容的提问来源于stack exchange,提问作者p.magalhaes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 11:47:00