更新:看起来我将不得不创建自定义小部件(在 Django 中分组 CheckboxSelectMultiple 选项)。完成后将包含最终代码。
我已经以类似于另一个SO question的 django 形式设置了一个选择字段。
但是,我想让它成为一个CheckboxSelectMultiple
小部件,但是在 Meta 类中这样做会为整个组创建一个复选框。这是我需要在 中做的事情__init__
,如果是的话怎么办?
class FooIterator(models.ModelChoiceIterator):
def __init__(self, *args, **kwargs):
super(models.ModelChoiceIterator, self).__init__(*args, **kwargs)
def __iter__(self):
for thing in MyModel.objects.all():
yield (thing.name, [(x.id, x.name) for x in MyModel2.objects.filter(name=thing.name)])
class MyForm(ModelForm):
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['myField'].choices = FooIterator()
for x in self.fields:
self.fields[x].widget.attrs['class'] = 'input-block-level'