使用django-advanced-filters报错:'tuple'对象无split_contents属性
AttributeError: 'tuple' object has no attribute 'split_contents' 解决办法
报错原因
这个错误源于django-advanced-filters 2.0.0与Django 3.2存在兼容性冲突。该版本的advanced-filters内部在处理模板渲染或表单组件逻辑时,错误地将元组对象传递给了需要Django模板Node实例的方法,而split_contents()是Django模板Node类的专属方法,元组类型无法调用该方法,因此触发报错。
解决步骤
1. 升级django-advanced-filters到兼容版本
django-advanced-filters 2.1.0及后续版本已修复了与Django 3.2的兼容问题,执行以下命令完成升级:
pip uninstall django-advanced-filters pip install django-advanced-filters==2.1.0
2. 重新执行迁移
升级完成后,重新运行迁移命令:
python manage.py migrate
3. 额外排查(可选)
如果升级后仍出现报错,检查你的Admin类配置是否存在以下问题:
- 是否错误地将
list_filter或advanced-filters相关配置定义为元组而非列表(Django Admin通常要求这类配置为列表类型) - 是否自定义了advanced-filters的模板标签或扩展类,导致代码逻辑错误生成了元组对象
内容的提问来源于stack exchange,提问作者Kifsif
相关产品推荐
相关产品推荐

