Django项目使用Jazzmin模板时后台添加记录页面报错
Django项目使用Jazzmin模板时后台添加记录页面报错
兄弟,我之前也踩过Jazzmin模板的类似坑,你这个情况太典型了——用默认Django admin模板啥问题没有,一换Jazzmin,后台点“添加记录”就直接报错,报错的是这段模板代码:
<div class="form-group{% if line.fields|length_is:'1' and line.errors %} errors{% endif %}{% if not line.has_visible_field %} hidden{% endif %}{% for field in line %}{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% endfor %}">
给你几个我亲测有效的排查解决思路:
- 先查版本兼容性!这是最容易踩的坑,Jazzmin对Django版本有适配要求,比如Django 4.2+之后admin内部的表单结构有变化,老版本Jazzmin没跟上。赶紧把Jazzmin更到最新稳定版,跑这个命令就行:
pip install --upgrade django-jazzmin,升级完重启服务试试。 - 排除特定模型的问题:你可以临时整个超简单的测试模型(比如就一个
name = models.CharField(max_length=100)字段),注册到admin里用Jazzmin打开添加页,如果能正常显示,那就是你原来的模型admin配置有问题——比如自定义了add_form、用了特殊字段组件,或者加了第三方admin插件,和Jazzmin的渲染逻辑冲突了。 - 清缓存试试玄学:有时候Django的模板缓存会抽风,运行
python manage.py clearcache,或者手动删掉项目里所有__pycache__文件夹,再重启服务,说不定就正常了。 - 模板代码临时适配(万不得已再用):如果上面的都没用,你可以找到Jazzmin里这段报错的模板文件(一般在
jazzmin/templates/admin/includes/fieldset.html里),把line.fields|length_is:'1'改成line.fields|default:[]|length_is:'1',给字段列表加个默认空数组,避免空值导致渲染报错。注意别直接改第三方包的文件,最好把这个模板复制到你项目自己的templates/admin/includes/目录下再修改,这样后续升级Jazzmin不会覆盖你的改动。
备注:内容来源于stack exchange,提问作者mbayma hubert
相关产品推荐
相关产品推荐

