Django - Передача пользовательских параметров формы в модельзавод
У меня есть Django ModelForm, как это:
class ContactPhoneForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ContactPhoneForm, self).__init__(*args, **kwargs)
#....
... и представление, где я пытаюсь получить соответствующий набор форм:
ContactPhoneFormSet = modelformset_factory(ContactPhone,
ContactPhoneForm,
extra=1,
can_delete = True)
Теперь я хочу, чтобы дополнительный параметр был передан __init__
метод формы:
class ContactPhoneForm(forms.ModelForm):
def __init__(self, contact_id, *args, **kwargs):
self.contact_id = contact_id
super(ContactPhoneForm, self).__init__(*args, **kwargs)
#....
Я попытался переписать мой взгляд в соответствии с этим постом:
ContactPhoneFormSet = modelformset_factory(ContactPhone,
wraps(ContactPhoneForm)(partial(ContactPhoneForm, contact_id=contact_id)),
extra=1,
can_delete = True)
но я в конечном итоге TypeError: the first argument must be callable
ошибка. Любая помощь в этом?
1 ответ
Решение
Django 1.9 добавил аргумент form_kwargs, чтобы вы могли сделать:
ContactPhoneFormSet = modelformset_factory(
ContactPhone, ContactPhoneForm, extra=1, can_delete=True)
formset = ContactPhoneFormSet(form_kwargs={'contact_id': contact_id})