У меня есть форму с ModelMultipleChoiceField
в список категорий. Я хотел бы сгруппировать категории, используя поле Category.group
.Как добавить optgroups в django ModelMultipleChoiceField?
Я думал, что, изменив поле. choices
в функции инициализации он будет делать трюк
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
еще стереть self.choices
данные, которые установлены в функции __init__
.
Как я могу это сделать правильно?