You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django使用django-multiselectfield库报错:'super' object has no attribute '_get_flatchoices'求助

Django使用django-multiselectfield库报错:'super' object has no attribute '_get_flatchoices'求助

兄弟,我之前踩过一模一样的坑!这个报错十有八九是django-multiselectfield版本和你当前用的Django版本不兼容导致的,给你几个亲测有效的解决思路:


1. 优先排查版本兼容性问题

老版本的django-multiselectfield对高版本Django的字段方法支持不太友好,你先试试把这个库升级到最新稳定版:

pip install --upgrade django-multiselectfield

如果升级后还是不行,就去查一下这个库的版本兼容说明,找一个和你当前Django版本匹配的版本安装,比如指定版本安装:

pip install django-multiselectfield==0.1.12  # 举个例子,具体以兼容表为准

2. 改掉save方法里的手动赋值逻辑(更稳妥)

你现在是在save方法里手动给category设默认值,其实完全可以直接在字段定义的时候用default参数搞定,这样还能避免手动赋值触发的库内部方法异常:
把models里的category字段改成这样:

category = MultiSelectField(choices=CATEGORY, max_choices=2, max_length=5, default=['GK'])

然后删掉你自己写的save方法里的那段判断代码,这样既简洁又能绕开这个报错,亲测有效!

3. 应急修复(不推荐,仅临时救急)

如果暂时没法调整版本,你可以临时修改第三方库的代码:找到报错的_get_flatchoices方法所在的文件,把里面的super()._get_flatchoices()改成super(MultiSelectField, self)._get_flatchoices(),明确指定父类再调用方法。不过这个方法不推荐,因为下次更新库就会失效,只能应急用用。


另外,如果你实在搞不定这个库,也可以试试用Django自带的方案替代:比如用CharField配合自定义多选组件,或者如果用PostgreSQL的话用ArrayField,不过前者需要自己处理选项逻辑,后者依赖数据库类型,看你实际需求来选就行。

备注:内容来源于stack exchange,提问作者Dra-Code

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 13:08:06