Django如何获取模型全部字段?查询时blog_id、created_at不存在如何解决
Django模型已定义字段但查询提示不存在的排查方案
1. 优先检查数据库迁移执行状态
这是该类问题最常见的触发原因:新增/修改模型字段后,没有生成并执行迁移文件,导致模型定义和实际数据库表结构不同步,按顺序执行以下命令即可解决:
- 生成迁移文件:
python manage.py makemigrations - 执行迁移同步到数据库:
python manage.py migrate
如果执行后依然报错,说明存在旧迁移记录冲突,可以按以下步骤清理后重新同步:
- 删掉对应app下
migrations文件夹里除__init__.py之外的所有文件 - 清空数据库
django_migrations表中对应app的迁移记录 - 重新执行上述makemigrations和migrate命令
2. 检查模板字段调用写法是否正确
你传递到模板的变量message是博客查询集,需要先遍历再取单个对象的字段,正确示例写法如下:
{% for blog in message %} <p>博客ID:{{ blog.blog_id }}</p> <p>创建时间:{{ blog.created_at }}</p> {% endfor %}
如果直接对查询集取字段,写为{{ message.blog_id }}这类格式也会触发字段不存在类报错。
3. 特殊场景排查
如果上面两步操作后问题仍存在,检查是否符合以下情况:
- 实际操作的数据库和settings.py中配置的数据库不一致,迁移同步到了错误的库
- 模型定义放错了app,迁移时同步到了其他app对应的表结构中
- 字段调用时存在拼写错误,注意字段名大小写敏感,比如把
created_at误写为create_at
内容的提问来源于stack exchange,提问作者Shrimad Mishra
相关产品推荐
相关产品推荐

