는 만들고 오버 쟁이 save()
기능에 새로운 UserProfile
인스턴스를 저장 (그것은 불행하게도 자신을 반복 피하기 위해 ModelForm
를 사용하기 너무 쉬운 일이 아닙니다) 당신의 UserProfile
모델에 맞게 필드를 추가합니다. 링크 된 게시물에서 변경 :
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class UserCreateForm(UserCreationForm):
job_title = forms.CharField(max_length=100, required=True)
age = forms.IntegerField(required=True)
class Meta:
model = User
def save(self, commit=True):
if not commit:
raise NotImplementedError("Can't create User and UserProfile without database save")
user = super(UserCreateForm, self).save(commit=True)
user_profile = UserProfile(user=user, job_title=self.cleaned_data['job_title'],
age=self.cleaned_data['age'])
user_profile.save()
return user, user_profile
감사합니다! job_title과 age는 UserProfile 권한에 정의 된 필드입니까? 우리는 UserProfile이 외래 키를 통해 사용자에게 연결되어 있다는 것을 알고 있습니다. User와 같은 모델에 대해 Model Form을 생성하면 User 외래 키의 필드도 Form에 사용할 수 있습니까? – goelv
'job_title'과'age'는'UserProfile' 모델의 허수의 필드였습니다. 핵심은 원하는 필드를'ModelForm'에 추가 할 수 있다는 것입니다. 'Meta '에 명시된 모델과 관련이없는 것들은 무시되며, 그것들을 처리하는 것은 당신에게 달려있다. 그게 내 제안 된 코드 ('self.cleaned_data'에서 값을 꺼내는 것)입니다. – supervacuo
* ie * 필드가'UserProfile'의 모델 필드가 아니더라도 계속 추가하면됩니다. 여기에'save()'에 의미있는 것이 있습니다. 여기에'UserProfile'에 특별한 것은 없습니다. – supervacuo