Django使用extra_context渲染模板报ProgrammingError错误是什么原因?
问题原因
这个报错的核心是Django模型定义与数据库实际表结构不匹配:
- 你在
InformacionTiendas模型中定义了nombre字段,但数据库对应的InformacionTiendas_informaciontiendas表中还没有创建该列,当extra_context执行InformacionTiendas.objects.all()查询时,Django会默认拉取模型定义的所有字段,找不到nombre列就触发了ProgrammingError。 - 注释
extra_context后不会触发全表查询动作,因此页面不会报错,但模板需要的tiendas上下文也没有传递,所以对应内容无法渲染。
解决方法
按顺序执行以下操作即可:
- 生成模型变更对应的迁移脚本:
python manage.py makemigrations
如果执行时提示你需要为已有数据的nombre字段设置默认值,按照提示输入对应默认值即可。
2. 将迁移变更同步到数据库:
python manage.py migrate
- 取消
extra_context行的注释,重启Django服务后即可正常传递上下文、渲染模板内容。
内容的提问来源于stack exchange,提问作者Itzel Bracho Molina
相关产品推荐
相关产品推荐

