python - 如何将 optgroups 添加到 django ModelMultipleChoiceField?

标签 python django django-forms properties

我有一个带有 ModelMultipleChoiceField 的表单来列出类别。 我想使用 Category.group 字段对类别进行分组。

我认为通过更改 field.choices 在 init 函数中它会成功

class CategoriesField(forms.ModelMultipleChoiceField):
    def __init__(self, queryset, **kwargs):
        super(forms.ModelMultipleChoiceField, self).__init__(queryset, **kwargs)
        self.queryset = queryset.select_related()
        self.to_field_name=None

        group = None
        list = []
        self.choices = []

        for category in queryset:
            if not group:
                group = category.group

            if group != category.group:
                self.choices.append((group.title, list))
                group = category.group
                list = [(category.id, category.name)]
            else:
                list.append((category.id, category.name))
        try:
            self.choices.append((group.title, list))
        except:
            pass

但是 ModelChoiceIterator 仍然会删除 __init__ 函数中设置的 self.choices 信息。

我怎样才能以正确的方式做到这一点?

最佳答案

实际上它就像我刚刚解释的那样工作,但不要忘记那部分:

class ProfilForm(ModelForm):
    categories  = CategoriesField(queryset=Category.objects.all().order_by('group'), label=_(u'Catégories'))

关于python - 如何将 optgroups 添加到 django ModelMultipleChoiceField?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3737116/

相关文章:

django - 为什么添加基本模板会破坏我的 Django 表单

Python3.4 错误-无法启用可执行堆栈,因为共享对象需要 : Invalid argument

javascript - Microsoft Edge 和 IE11 的 CSRF 问题

Django + react : How to connect them for deployment?

python - 如何让 LBForum (0.9.22) 运行

python - 无法在 Django 中呈现表单

javascript - 如果表单中没有此字段,如何在使用后期服务时添加参数?

python - 在Python中将文件直接上传到FTP服务器

python - 欧氏距离的迭代计算

python - 如何使用 pexpect 从 unix 中的对话框中获取文本?