У меня есть форма с набором встроенных форм. Что я хотел бы сделать, так это когда пользователь попадает в форму, чтобы его информация о пользователе (например, имя) была предварительно заполнена в одной из встроенных строк формы. Чтобы иметь возможность передать запрос в строку.
Как это сделать?
Я использую django-extra-views 0.6 на Django 1.4.
В views.py
я использую get_extra_form_kwargs
def для настройки своих kwargs следующим образом:
class EventMemberInline(InlineFormSet):
model = EventMember
extra = 1
form_class = EventMemberForm
def get_formset_kwargs(self):
formset_kwargs = super(EventMemberInline, self).get_formset_kwargs()
formset_kwargs.update({'first_name':self.request.user.first_name, 'last_name':self.request.user.last_name})
return formset_kwargs
Я делаю это, пытаясь связать поля моих встроенных строк (начальные значения) с тем, что я прохожу через kwargs (в данном случае только имя пользователя и фамилия)
In forms.py
class EventMemberForm(ModelForm):
class Meta:
model = EventMember
def __init__(self, *args, **kwargs):
self.fields['first_name'].initial = kwargs['first_name']
self.fields['last_name'].initial = kwargs['last_name']
super(EventMemberForm, self).__init__(*args, **kwargs)
Но я получаю эту ошибку:
Exception Value:
__init__() got an unexpected keyword argument 'last_name'
Возможно ли то, что я пытаюсь сделать? Могу ли я установить начальное значение встроенного?
get_extra_form_kwargs
в своей строке, чтобы передать пользовательский объект каждому экземпляру формы. - person Andrew Ingram   schedule 27.01.2013get_formset_kwargs
, а неget_extra_form_kwargs
, это опечатка? Ваша форма тоже сломается, я поставлю «правильный» код в качестве ответа. - person Andrew Ingram   schedule 30.01.2013