2017-12-15 14 views
0

등록/로그인 작업을 포함하는 webapp를 만들려고합니다. 로그인은 정상적으로 작동하지만 등록 양식은 실망 스럽습니다.django - 등록 양식 정보를 사용자 프로필 모델에 연결

UserCreationForm을 상속 한 클래스 등록 양식이 있습니다. 관리자 페이지가 만들어지면 사용자가 만들어지고 표시되지만 문제는 관리자 페이지의 UserProfile 모델에서 볼 수 없습니다. 그것은 정보를 연결하지 않으며 나는 그 (것)들을 연결하는 방법을 찾아 낼 수 없었다.

class UserProfile(models.Model): 
    user = models.OneToOneField(User, 
           on_delete=models.CASCADE 
           ) 
    username = models.TextField(max_length=30, default="") 
    first_name = models.TextField(max_length=30, default="") 
    last_name = models.TextField(max_length=30, default="") 
    country = models.TextField(max_length=30, default="Which country are you from?") 
    city = models.TextField(max_length=30, default="Which city are you from?") 


class ColorChoice(models.Model): 
    user = models.ForeignKey(
          'UserProfile', 
          on_delete=models.CASCADE 
          ) 
    color1 = models.IntegerField() 
    color2 = models.IntegerField() 
    color3 = models.IntegerField() 
    color4 = models.IntegerField() 
    color5 = models.IntegerField() 

과 등록을하지 내 view.py : 여기

from django import forms 
from django.contrib.auth.models import User 
from django.contrib.auth.forms import UserCreationForm 

    class RegistrationForm(UserCreationForm): 
     email = forms.EmailField(required=True) 
     city = forms.CharField(required=False) 
     country = forms.CharField(required=True) 
     first_name = forms.CharField(required=True) 
     last_name = forms.CharField(required=True) 
     username = forms.CharField(required=True) 

     class Meta: 
      model = User 
      fields = (
       'username', 
       'first_name', 
       'last_name', 
       'country', 
       'city', 
       'email' 
      ) 

      def save(self, commit=True): 
       user = super(RegistrationForm, self).save(commit=False) 
       #user.first_name = self.cleaned_data['first_name'] 

       if commit: 
        user.save() 

       return user 

내 모델입니다 :

def register(request): 
    if request.method == 'POST': 
     form = RegistrationForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return redirect('color') 
    else: 
     form = RegistrationForm() 

     args = {'form': form} 
     return render(request, 'account/create_new.html', args) 
+0

나는 어떤'UserProfile' 모델을 참조니까. 'UserModel' ='UserProfile'입니까? 그렇다면 사용자가 생성 될 때 객체를 저장하지 않습니다. –

+0

@SachinKukreja 죄송 합니다만, UserModel 모델은 내가 알아 차 렸기 때문에 그것을 바꿨다는 것을 잊었습니다. –

답변

1

당신의 form가 아니라 여기에

등록 양식입니다 User에 대한 새 개체를 만듭니다. UserProfile에 대한 새 개체를 만들려면 예를 들어 signal을 추가해야합니다. 이 같은

뭔가 :

def create_user_profile(sender, instance, created, **kwargs): 
    if created: 
     Profile.objects.create(user=instance) 
signals.post_save.connect(create_user_profile, sender=User) 
+0

고마워요! –