Django admin添加数据不显示在网页且makemigrations报错如何解决?
问题原因
- 迁移报错原因:你的
researchpaper数据库表中已经存在历史数据,后续新增的link字段为非空类型,Django无法自动为已有历史行填充该字段的值,因此触发迁移报错。 - 前端数据不展示原因:HTML模板中调用的模型字段名和models.py中定义的字段名不匹配,且年份写死为固定值,导致即使数据库有正确数据也无法正常渲染。
- admin面板报错原因:数据库迁移未完成,表结构和模型定义不匹配,操作admin时触发字段校验错误。
解决步骤
- 处理迁移报错:首先选择迁移提示的选项2,退出迁移流程,修改models.py中的
link字段,根据业务需求添加默认值或者允许为空:# 方案1:设置默认空字符串,适合必填字段 link = models.CharField(max_length=300, default='') # 方案2:允许为空,适合非必填字段 # link = models.CharField(max_length=300, blank=True, null=True) - 修正HTML模板的字段调用错误:
- 将
{{public.publications}}修改为{{public.publication}},和models中定义的字段名保持一致 - 将
{{public.author}}修改为{{public.authors}},和models中定义的字段名保持一致 - 将写死的
<h5>2021</h5>修改为<h5>{{public.year.year}}</h5>,动态读取论文发表年份 - 可将a标签的
href="#"修改为href="{{public.link}}",实现点击跳转到对应论文链接
- 将
- 重新执行迁移命令:
python manage.py makemigrations python manage.py migrate - 检查admin.py配置,确保已经注册了
researchpaper模型,否则admin面板无法正常操作该模型数据:from django.contrib import admin from .models import researchpaper admin.site.register(researchpaper) - 重启Django服务,在admin面板重新添加测试数据,访问前端页面即可看到正常渲染的内容。
内容的提问来源于stack exchange,提问作者harsh
相关产品推荐
相关产品推荐

