Django执行migrate报错:无法解析关键字'name'为字段
Django migrate时FieldError问题解决:Cannot resolve keyword 'name' into field
错误根源
你的Django模型中定义的字段是Name(首字母大写),但代码里有某处用了小写的name作为查询关键字(比如admin配置、视图查询、模型管理器操作等),导致Django无法匹配到对应字段。
检查与修复步骤
确认模型字段定义
打开models.py,找到对应的模型类,检查字段是否是大写开头的Name:# 错误示例(不符合PEP8规范) class Book(models.Model): Name = models.CharField(max_length=200)按照Python命名规范,Django模型字段推荐用小写字母加下划线,所以修改为:
# 正确示例 class Book(models.Model): name = models.CharField(max_length=200)检查admin配置
打开admin.py,确认是否在list_display、search_fields或自定义方法中使用了小写的name:# 错误示例 @admin.register(Book) class BookAdmin(admin.ModelAdmin): list_display = ('name',) # 模型字段是Name,这里用了name会报错若模型字段改为小写
name,则这里无需修改;若坚持用Name字段,需改为:list_display = ('Name',)重新执行迁移命令
修改模型后,重新生成迁移并执行:python3 manage.py makemigrations python3 manage.py migrate
额外提示
Django官方推荐模型字段名使用小写字母加下划线(如book_name),避免大小写混用导致的字段名匹配错误,同时符合PEP8编码规范。
内容的提问来源于stack exchange,提问作者Trantor
相关产品推荐
相关产品推荐

