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

Django修改模型关联random_string函数名触发AttributeError报错求助

报错核心原因
  • 触发报错的根源是Django对字段默认可调用对象的持久化存储机制:当你第一次为模型生成迁移文件时,Django会把绑定为default的可调用对象的模块全路径+函数名硬编码写入迁移文件的元数据中。
  • 你修改模型内的函数名称时,旧的迁移文件、甚至Django缓存的模型元数据中,依然在尝试加载原本写死的users_data.models.random_string属性,只要模块内不存在这个名称的属性,就会立刻抛出AttributeError,和你新的函数命名完全无关。
对应解决步骤
  • 逐文件排查users_data/migrations/目录下所有生成的迁移脚本,定位所有硬编码引用random_string的代码片段。
  • 完成模型代码修改:把你想要重命名的工具函数改成目标名称(比如将random_string重命名为generate_auth_code),同步把auth_code字段的default参数指向新的函数名。
  • 如果你不需要保留旧迁移的历史记录(适合开发阶段):直接删除users_data/migrations/目录下除__init__.py外的所有文件,同时清空数据库中django_migrations表里对应users_data应用的迁移记录,重新执行makemigrations和migrate命令,会生成全新的、绑定新函数名的迁移文件,彻底消除旧名称的引用。
  • 如果需要保留迁移历史:把所有迁移文件中硬编码的random_string字符串引用全部替换为你修改后的新函数名,再执行迁移校验即可正常运行。
  • 代码优化提示:原函数中random.randint(000000, 999999)本身就会返回整数,外层包裹的int()属于冗余代码,可以直接移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 19:36:03