Django执行迁移后仍报Unknown Column错误及Admin显示异常求助
问题原因分析与解决办法
一、数据库迁移后提示“no such column: Linked_OKR”的原因
- 字段名大小写引用错误:你定义的模型字段是
linked_OKR,但错误提示中的字段是Linked_OKR(首字母大写),大概率是代码中某处的查询(比如视图、序列化器、模板里的ORM语句)写错了字段名的大小写,Django ORM会将错误的字段名解析为数据库列名,导致找不到对应列。 - 迁移未正确执行:检查是否运行了
python manage.py migrate将生成的迁移文件同步到数据库,或者查看migrations文件夹中的新迁移文件,确认是否包含创建okrid列的语句。如果迁移文件未正确生成,可能是因为之前的迁移有残留,或者模型定义存在其他语法问题。 db_column映射冲突:虽然你指定了db_column='okrid',但如果数据库中已有同名列且与当前外键关联逻辑不匹配,或者Django ORM在查询时未正确识别db_column的配置,也可能导致错误。可以尝试删除旧的迁移文件(保留初始迁移),重新生成并应用迁移。
二、Admin视图中字段未以粗体显示的原因
Django Admin默认会给必填字段(即blank=False且null=False的字段)显示粗体,你的linked_OKR字段设置了blank=True, null=True,属于可选字段,因此默认不会以粗体显示。如果需要让它加粗,可在Admin类的fieldsets中为该字段配置自定义样式,示例代码如下:
from django.contrib import admin from .models import YourModel class YourModelAdmin(admin.ModelAdmin): fieldsets = [ (None, { 'fields': ['linked_OKR'], 'classes': ['bold'], }), # 其他字段组配置... ] admin.site.register(YourModel, YourModelAdmin)
内容的提问来源于stack exchange,提问作者kikee1222
相关产品推荐
相关产品推荐

