我有一些对象可以说 foo1,foo2,foo3,foo4 .. 等等。
我想创建一个表单,我可以在其中选择这些 foo 对象中的任何一个。我可以通过几种方式做到这一点。
1)
class FooReportForm(forms.Form):
foo = forms.CheckboxInput()
def __init__(self,*args,**kwargs):
foos= kwargs.get('foos')
foo_choice = []
for foo in foos:
index = (foo.id,foo.name +" Area"+foo.area+" Region"+foo.region )
foo_choice.append(index)
super( PropertyReportForm, self).__init__(*args, **kwargs)
self.fields['foo'].choices = foo_choice`
2)`
class FooForm(forms.Form):
def __init__(self, *args, **kwargs):
foos= kwargs.pop('foos')
super(FooForm, self).__init__(*args, **kwargs)
choices = []
if foos:
pass
else:
foos = []
for i,fooin enumerate(foos):
index = [(foo.id , foo)]
choices = index
self.fields['foo_%s'% i] = forms.MultipleChoiceField(choices=choices,widget =forms.CheckboxSelectMultiple,required = False)
第一种方法不允许我先检查或取消选中某些选项。我怎样才能在这种方法中做到这一点?第二个是错误的,因为它为每个选择创建了一个新字段。做这个的最好方式是什么 ?