2015-10-18 2 views
1

Я пытаюсь переопределить init метод на этой форме у меня есть. Это выглядит примерно так:Django Form Init Key Error с Kwargs

def __init__(self, *args, **kwargs): 
    fr = None 
    if kwargs.get('friend', False): 
     fr = Friend.objects.get(pk=kwargs.get('friend')) 
    super(CreateFriendForm, self).__init__(*args, **kwargs) 

    self.fields["{}_house".format(fr.name)] = forms.ModelChoiceField(queryset=Houses.objects.all(), required=False) 

Итак, я хочу, чтобы захватить друг kwargs и использовать его, как вы видите выше. В зависимости от того, какой друг передан, я добавлю поле. В моих тестах я прохожу следующие данные:

data = { 
     "user": self.user.pk, 
     "friend": self.friend.pk, 
     "language": 'en' 
    } 
    friend = self.form(data) 
    # Validity 
    self.assertTrue(friend.is_valid()) 
    friend.save() 

Однако я получаю сообщение об ошибке, что есть ключ ошибка по адресу:

if kwargs.get('friend', False): 

Я передаю необходимые данные (друг, пользователь , и т. д.), но, похоже, это не в кваргах. В чем проблема? Благодарю.

+0

В чем разница между 'fr' и' friend'? Вы используете 'friend.name', но устанавливаете' fr' для объекта friend. – ozgur

+0

@ozgur Нет. Опечатка с моей стороны, мой плохой. – user3084860

+0

какая именно ошибка вы получаете? – ozgur

ответ

0

Проблема заключалась в том, что я передавал данные в форме как arg, а не как kwarg. Изменение:

friend = self.form(data) 

к:

friend = self.form(data=data) 

Исправлена ​​главная проблема, что у меня был.

Смежные вопросы