2015-07-12 56 views
0

我一直試圖擴展我的allauth註冊表單,但似乎無法讓它工作,我收到沒有錯誤消息,並且一切似乎都正常工作,除了我所有的其他字段不保存。請告訴我,如果你能看到我做錯了,謝謝!Allauth不會保存其他字段

模型 -

from django.db import models 
from django.contrib.auth.models import User 

class EmployerProfile(models.Model): 

    region_choice = (
     ('1', 'Auckland'), 
     ('2', 'Wellington'), 
     ('3', 'Christchurch') 
    ) 
    suburb_choice = (
     ('1', 'Glendowie'), 
     ('2', 'Kohimarama'), 
     ('3', 'Mission Bay') 
    ) 
    industry_choice = (
     ('1', 'Restaurant'), 
     ('2', 'IT'), 
     ('3', 'Construction') 
    ) 

    user = models.OneToOneField(User, unique=True) 
    home_number = models.IntegerField(max_length=12) 
    mobile_number = models.IntegerField(max_length=12) 
    business_name = models.CharField(max_length=50) 
    business_address_number = models.IntegerField() 
    business_address_street = models.CharField(max_length=50) 
    business_address_region = models.CharField(max_length=50, choices=region_choice) 
    business_address_suburb = models.CharField(max_length=50, choices=suburb_choice) 
    business_address_postcode = models.IntegerField(max_length=4) 
    business_industry = models.CharField(max_length=50, choices=industry_choice) 

    class Meta: 
     verbose_name = 'Employer Profile' 

形式 -

from django import forms 
from models import EmployerProfile 

class SignupForm(forms.Form): 

    first_name = forms.CharField(max_length=30, label='First Name') 
    last_name = forms.CharField(max_length=30, label='Last Name') 
    home_number = forms.IntegerField(label='Home Number') 
    mobile_number = forms.IntegerField(label='Mobile Number') 
    business_name = forms.CharField(label='Business Name') 
    business_address_number = forms.IntegerField(label='Street Number') 
    business_address_street = forms.CharField(label='Street Name') 
    business_address_region = forms.ChoiceField(choices=EmployerProfile.region_choice, label='Region') 
    business_address_suburb = forms.ChoiceField(choices=EmployerProfile.suburb_choice, label='Suburb') 
    business_address_postcode = forms.IntegerField(label='Postcode') 
    business_industry = forms.ChoiceField(choices=EmployerProfile.industry_choice, label='Industry') 

    def signup(self, request, user): 
     user.first_name = self.cleaned_data['first_name'] 
     user.last_name = self.cleaned_data['last_name'] 
     user.home_number = self.cleaned_data['home_number'] 
     user.mobile_number = self.cleaned_data['mobile_number'] 
     user.business_name = self.cleaned_data['business_name'] 
     user.business_address_number = self.cleaned_data['business_address_number'] 
     user.business_address_street = self.cleaned_data['business_address_street'] 
     user.business_address_region = self.cleaned_data['business_address_region'] 
     user.business_address_suburb = self.cleaned_data['business_address_suburb'] 
     user.business_address_postcode = self.cleaned_data['business_address_postcode'] 
     user.business_industry = self.cleaned_data['business_industry'] 

     user.save() 

    class Meta: 
     model = EmployerProfile 

設置 -

SITE_ID = 1 
ACCOUNT_SIGNUP_FORM_CLASS = 'profiles.forms.SignupForm' 
ACCOUNT_EMAIL_REQUIRED = True 
ACCOUNT_EMAIL_VERIFICATION = None 
LOGIN_REDIRECT_URL = '/' 

回答

0

您的用戶對象上添加新的屬性,而不是創建一個新的EmployerProfile。 我相信下面的代碼是你正在努力實現的:

class SignupForm(forms.Form): 
    # ... 
    def signup(self, request, user): 
     EmployerProfile.objects.create(
      user=user, 
      home_number=self.cleaned_data['home_number'], 
      mobile_number=self.cleaned_data['mobile_number'], 
      business_name=self.cleaned_data['business_name'], 
      business_address_number=self.cleaned_data['business_address_number'], 
      business_address_street=self.cleaned_data['business_address_street'], 
      business_address_region=self.cleaned_data['business_address_region'], 
      business_address_suburb=self.cleaned_data['business_address_suburb'], 
      business_address_postcode=self.cleaned_data['business_address_postcode'], 
      business_industry=self.cleaned_data['business_industry'] 
     ) 
+0

非常感謝你,這工作的魅力! –