2016-11-29 2 views
0

Я, вероятно, отсутствует что-то очевидное здесь, но я получаю следующее сообщение об ошибке:Джанго allauth пользовательских регистрационная форма ошибка: объект «учреждение» не Iterable

'Institution' object is not iterable 

Он не любит эту строку в код:

user.institution = institution 

Вот полный класс SignupForm для Django allauth:

class SignupForm(forms.Form): 
    first_name = forms.CharField(
     max_length=255, 
     label="Your First Name", 
    ) 
    last_name = forms.CharField(
     max_length=255, 
     label="Your Last Name", 
    ) 
    institution = forms.ModelChoiceField(
     label="Your Institution", 
     queryset=Institution.objects.all(), 
     empty_label="Other Institution Not Listed", 
    ) 

    def signup(self, request, user): 
     from pprint import pprint 
     user.first_name = self.cleaned_data['first_name'] 
     user.last_name = self.cleaned_data['last_name'] 
     user.institution = self.cleaned_data['institution'] 

     user.save() 

Я проверил self.cleaned_data, и это, как представляется, минуя учреждение правильно:

{'email': '[email protected]', 
'first_name': 'John', 
'institution': <Institution: Blah College>, 
'last_name': 'Doe'} 

Я использую пользовательскую модель пользователя и учреждением является много-ко-многим:

institution = models.ManyToManyField(Institution, db_index=True) 

Любых идей? Что я здесь делаю неправильно?

ответ

1

Если его отношения ManyToMany, то вам необходимо использовать метод add связать учреждение с пользователем:

user.institution.add(self.cleaned_data['institution']) 

Вы можете прочитать больше об операциях на многие-ко-многим here.

+0

Gah, есть. Смотрю прямо на меня в лицо. Спасибо! – FlipperPA

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