У меня есть ModelForm
, в котором есть дополнительное поле, являющееся пользовательским виджетом.Я могу добавить дополнительное поле с виджетом и передать ему произвольные значения ключа при создании виджета.Я также могу получить доступ к данным модели в ModelForm
в функции __init__
.
Моя проблема заключается в том, что для добавления дополнительного поля в ModelForm
требуется сделать это вне функции __init__
хотя доступ к данным модели возможен только из функции __init__
.
class SomeForm(forms.ModelForm):
title = None
def __init__(self, *args, **kwargs):
some_data = kwargs['instance'].some_data
# ^ Here I can access model data.
super(SomeForm, self).__init__(*args, **kwargs)
self.fields['some_extra_field'] = forms.CharField(widget= SomWidget())
# ^ This is where I would pass model data, but this does not add the field.
class Meta:
model = Page
fields = "__all__"
some_extra_field = forms.CharField(widget= SomeWidget())
# ^ I can add a field here, but there's no way to pass some_data to it.
Я также пытался установить self.some_data
в __init__
, но он все еще недоступен, когда я пытаюсь использовать self.some_data
при установке some_extra_field
в конце класса.
Как передать данные модели в виджет в ModelForm
?