2
我想創建一個基於動態創建其字段的MultiValueField的自定義小部件。沿着線的東西:Django中的動態MultiValueField
class MyField(MultiValueField):
def __init__(self, my_param, *args, **kwargs):
fields = []
for field in my_param.all():
fields.append(forms.ChoiceField(
widget=forms.Select(attrs={'class':'some_class'})))
super(MyField, self).__init__(
self, fields=tuple(fields), *args, **kwargs)
並採用場這樣的形式:
class MyForm(forms.Form):
multi_field = MyField()
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['multi_field'].my_param = self.initial['car_types'].another
我莫名其妙地停留在那一刻。當param僅在MyForm的構造函數中知道時(例如self.initial ['car_types']。another),我怎樣才能將一個參數(例如my_param)傳遞給MyField的init()方法?
沒錯,就是工作。謝謝。 – mzu
......但是如果出現'FieldError:Unknown field(s)',我們的模型和MyForm不知道這個'multi_field' - 我們的ModelAdmin的字段集中給出的自定義字段,並且需要在MyForm類中定義。 –