2
Я пытаюсь создать собственный виджет на основе MultiValueField, который динамически создает свои поля. Что-то вдоль линий:Динамический MultiValueField в Django
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
Я как-то застрял в данный момент. Как передать параметр (например, my_param) в метод MyField init(), когда параметр известен только из конструктора MyForm (например, self.initial ['car_types']. Другой)?
Да, это работает. Благодарю. – mzu
... но что, если 'FieldError: Unknown field (s)' появляется, потому что наша модель и MyForm не знают этого «multi_field» - настраиваемого поля, заданного в полях нашего ModelAdmin и требуемого для определения в классе MyForm. –