2016-09-22 3 views
2

django에서 등록 양식에 대한 사용자 정의 사용자 모델을 만들고 있지만 데이터베이스에 데이터를 가져 오는 데 문제가 있습니다. 현재 사용자는 등록 할 수 있으며 사용자 이름, 암호, 전자 메일, 이름, 성은 저장되지만 다른 모든 양식 데이터는 개체에 저장되지 않습니다. 다음은 내 양식 및 출력은 다음과 같습니다등록 양식을 사용하여 사용자 정의 사용자 필드에 추가 (django)

Models.py이

class Profile(models.Model): 
    user = models.OneToOneField(User) 
    gender = models.CharField(max_length=20) 
    medication = models.CharField(max_length=50, blank=True) 
    medical_history = models.CharField(max_length=50,blank=True) 
    DOB = models.CharField(max_length=20) 
    telephone = models.CharField(max_length=20) 
    address = models.CharField(max_length=30) 
    city = models.CharField(max_length=20) 
    state = models.CharField(max_length=20) 
    postcode = models.CharField(max_length=30) 

forms.py :

class CreateAccountForm(ModelForm): 
    class Meta: 
     model = Profile 
     fields = ("username","password","password2","first_name","last_name", 
        "gender","medication","medical_history","DOB","email","telephone", 
        "address","city","state","postcode") 

views.py : 장고 관리자 창에서

def create_account(request): 
    form = CreateAccountForm(request.POST) 
    if form.is_valid(): 
     username = form.cleaned_data['username'] 
     password = form.cleaned_data['password'] 
     password2 = form.cleaned_data['password2'] 
     first_name = form.cleaned_data['first_name'] 
     last_name = form.cleaned_data['last_name'] 
     gender = form.cleaned_data['gender'] 
     medication = form.cleaned_data['medication'] 
     medical_history = form.cleaned_data['medical_history'] 
     DOB = form.cleaned_data['DOB'] 
     email = form.cleaned_data['email'] 
     telephone = form.cleaned_data['telephone'] 
     address = form.cleaned_data['address'] 
     city = form.cleaned_data['city'] 
     state = form.cleaned_data['state'] 
     postcode = form.cleaned_data['postcode'] 
     if password == password2: 
      if (password_verification(password)) == 3: 
       if (username_verification(username)) == False: 
        form.save() 
        return HttpResponseRedirect('/login') 
       else: 
        return HttpResponseRedirect('/create_account') 
      else: 
       return HttpResponseRedirect('/create_account') 
     else: 
      return HttpResponseRedirect('/create_account') 
    return render(request, "create_account.html", {'form': form}) 

, 사용자가 create_user 필드를 사용하여 데이터베이스에 등록하고 있지만 추가 된 사용자 정의 필드 중 사용 가능한 열에 저장하지 않는 경우 ns. 어떤 도움이라도 나를 괴롭히는 것은 대단 할 것입니다. 아래 빈 필드의 그림, 환호!

답변

2

당신은 사용자를 저장 만 user.save() 그래서 다른 Profile (Profile. 의미있는 뭔가

당신의 user 테이블을 변경 또한 당신은뿐만 아니라 당신의 프로필에 passwordfirst_namelast_nameemail 필요하지 마십시오.

ModelForm을 사용하여 프로필 표를 저장하는 것이 좋습니다.

user_form = CreateAccountForm(request.POST) 
profile_form = ProfileForm(request.POST)  

if user_form.is_valid() and profile_form.is_valid(): 
    # save the form after your password check 
    user_form.save() 
    profile_form.save() 
+0

모델 이름을 프로필로 변경했습니다. 제안에 대해 감사드립니다. form.save()가 뷰 파일에 포함됩니까? – Abjilla22

+0

예 ... 잠깐 ... 내 대답을 조금 바꿔서 좀 더 잘 이해할 수 있도록. –

+0

@ Abjilla22는 내 업데이트 된 답변을 참조하십시오. –

관련 문제