죄송합니다 다시 질문드려요. Django의 from에 관한질문드려요.


안녕하세요. Django에 대한 질문드려요. 오류 문제는 아니고요. 회원가입 폼을 변경문제로 문의 드립니다. models에 profile이라는 클래스를 생성하고 그 안에 객체를 생성했습니다.

class profile (models.Model):
    user=models.OneToOneField(User,on_delete=models.CASCADE)
    company=models.CharField(max_length=30)
    office = models.CharField(max_length=30)
    name = models.CharField(max_length=10)

그리고 forms에 UserCreationForm을 생성하고 models에 있는 profile에 저장을 할려고하는데 그방법을 몰라서 문의드립니다.

def save(self, commit=True):
        user = super(RegistrationForm, self).save(commit=False)
        company = self.cleaned_data.get('company')
        office = self.cleaned_data.get('office')
        name = self.cleaned_data.get('name')
        profile.objects.create(
            user=user,
            company=company,
            office=office,
            name=name
        )
        if commit:
            user.save()
        return user'''

위 방법은 기본 폼은 저장이 되는데 나머지 company/office/name은 저장이 안되고요 이미지 이름이나 설명을 여기에 넣어주세요.

위에것은 profile.objects.create 부분에서 오류가 납니다 .ㅜ . ㅜ 어떻게 해야지 model에 프로필에 저장이 될까요.

  • 2016년 06월 01일에 수정됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.
  • 2016년 05월 03일에 작성됨

  • 이전보다 보기가 좋기는 한데요... 코드는 http://hashcode.co.kr/questions/1772/마크다운-문법-작성-팁 을 참고하셔서 마크다운으로 작성해 주시면 좋겠네요. 이미지로 올리면 저걸 다 직접 쳐보기가 힘들어요. 그리고 에러가 발생할경우 에러메시지도 같이 올려주셔야 도움이 됩니다.    정두식   2016.5.3 10:44     
  • 네 알겠습니다.    고요한   2016.5.3 10:54     
  • 수정을 하였습니다. 이 방식이 맞나요?    고요한   2016.5.3 11:01     
  • 편집요청 보내 두었습니다. 코드는 앞뒤로 앞 뒤 로 ```를 이용해서 블록으로 묶을 수 있습니다. '가 아니라 `(보통 키보드에 물결 표시와 같은 자판에 있습니다)입니다.    정두식   2016.5.3 11:20     
조회수 219


2 답변


좋아요
0
싫어요
채택취소하기

원인을 찾았네요.

def save에 보시면

if commit:
    user.save()

이런 부분이 있는데요.

save가 실행되고 나서야 user가 db에 저장됩니다. 그래야 해당 user를 foreignkey로 이용해서 Profile에 저장할수가 있져. user.save()를 먼저하고 profile.objects.create하니 잘 됩니다.

  • 2016년 05월 03일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

  • user.save에서 오류가 나네요-_-    고요한   2016.5.4 11:55     
  • 수정했습니다.    고요한   2016.5.4 14:24     

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

class RegistrationForm(UserCreationForm):
     '''생략'''
   company=forms.CharField
   office=forms.CharField
   name=forms.CharField

class Meta:
        model = User
        fields = ("username", "email", "password1", "password2",'company','office','name')


def save(self,commit=True):
        user=super(RegistrationForm,self).save(commit=False)
        company=self.cleaned_data.get('company')
        office=self.cleaned_data.get('office')
        name=self.cleaned_data.get('name')
       if commit:
            user.save()
            profile.objects.create(
                user=user,
                company=company,
                office=office,
                name=name)
        return user
        user.save() ...

▶ Local vars 라고 오류가 뜨네요.

  • 2016년 05월 04일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close