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

Django使用字符串引用模型报Invalid model reference错误的解决方法

错误原因

Django 要求字符串形式的模型引用必须遵循应用标签.模型类名的格式,不能写模型的完整Python导入路径。你当前写的dsi.administration.libraries.Library是完整导入路径,不符合规范所以触发报错。

解决步骤
  1. 先确认Library模型对应的应用标签
    你可以直接在Django shell中执行以下代码获取准确的app_label:
from dsi.administration.libraries.models import Library
print(Library._meta.app_label)

正常情况下,因为你在SHARED_APPS中注册的应用路径是dsi.administration.libraries,且没有自定义应用标签的话,输出结果会是libraries。

  1. 替换多对多字段的引用字符串
    如果上一步得到的app_label是libraries,把你的字段定义修改为:
models.ManyToManyField("libraries.Library", verbose_name='library choices')
特殊场景处理

如果你的项目中存在多个结尾同名的应用(比如同时有dsi.a.libraries和dsi.b.libraries),需要手动给应用指定唯一标签,打开dsi/administration/libraries/apps.py,修改LibrariesConfig配置:

from django.apps import AppConfig

class LibrariesConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'dsi.administration.libraries'
    # 自定义唯一的应用标签
    label = 'administration_libraries'

之后引用的时候写"administration_libraries.Library"即可。

内容的提问来源于stack exchange,提问作者Ebolasudan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:39:02