죄송합니다 다시 질문드려요. Django의 from에 관한질문드려요.
조회수 2363회
안녕하세요. 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에 프로필에 저장이 될까요.
-
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
2 답변
-
원인을 찾았네요.
def save
에 보시면if commit: user.save()
이런 부분이 있는데요.
save가 실행되고 나서야 user가 db에 저장됩니다. 그래야 해당 user를 foreignkey로 이용해서 Profile에 저장할수가 있져.
user.save()
를 먼저하고profile.objects.create
하니 잘 됩니다. -
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 라고 오류가 뜨네요.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력