This was fixed in Django 1.9 with form_kwargs .Джанго Передача пользовательской формы Параметры для Formset
У меня есть форма Django, который выглядит следующим образом:
class ServiceForm(forms.Form):
option = forms.ModelChoiceField(queryset=ServiceOption.objects.none())
rate = forms.DecimalField(widget=custom_widgets.SmallField())
units = forms.IntegerField(min_value=1, widget=custom_widgets.SmallField())
def __init__(self, *args, **kwargs):
affiliate = kwargs.pop('affiliate')
super(ServiceForm, self).__init__(*args, **kwargs)
self.fields["option"].queryset = ServiceOption.objects.filter(affiliate=affiliate)
Я называю эту форму с чем-то вроде этого:
form = ServiceForm(affiliate=request.affiliate)
Где request.affiliate
является зарегистрированный пользователь. Это работает по назначению.
Моя проблема в том, что теперь я хочу превратить эту единую форму в набор форм. Я не могу понять, как я могу передать информацию о филиале в отдельные формы при создании набора форм. Согласно документации, чтобы сделать formset из этого мне нужно сделать что-то вроде этого:
ServiceFormSet = forms.formsets.formset_factory(ServiceForm, extra=3)
А потом мне нужно создать его так:
formset = ServiceFormSet()
Теперь, как я могу передать филиалу = request.affiliate для отдельных форм таким образом?
Это не работает для меня. Я получаю ошибку: AttributeError: объект «_curriedFormSet» не имеет атрибута «get» –
Я не могу дублировать эту ошибку. Это также странно, потому что у набора форм обычно нет атрибута get, поэтому, похоже, вы можете делать что-то странное в своем коде. (Кроме того, я обновил ответ, чтобы избавиться от странностей, таких как «_curriedFormSet»). –
Я пересматриваю это, потому что хочу, чтобы ваше решение работало. Я могу объявить набор форм штрафом, но если я попытаюсь напечатать его, то {{formset}} будет, когда я получу «не имеет атрибута« получить »ошибку. Это происходит с любым решением, которое вы предоставили. Если я прокручу форму и напечатаю формы как {{form}}, я снова получу ошибку. Если я, например, петлю и печатаю как {{form.as_table}}, я получаю пустые таблицы форм, т. Е. никакие поля не печатаются. Есть идеи? –