哆啦的时光机
我认为你把事情复杂化了。所以试试这样:# formsclass UserForm(forms.ModelForm): password = forms.CharField(widget= forms.PasswordInput) full_name = forms.CharField() codeforces_id = forms.CharField() Uva_Id = forms.CharField() class Meta: model = User fields = ('username','email','password', 'full_name', 'codeforces_id', 'Uva_Id') def save(self, commit=True): full_name = self.cleaned_data.pop('full_name') codeforces_id = self.cleaned_data.pop('codeforces_id') uva_Id = self.cleaned_data.pop('Uva_Id') user = super(UserForm, self).save(commit=False) password = self.cleaned_data.get('password') username = self.cleaned_data.get('username') user.set_password(password) user.save() Profile.objects.create( user=user, full_name = full_name, codeforces_id = codeforces_id, Uva_Id = uva_id ) authenticate(username=username, password=password) return user# viewclass UserFormView(CreateView): form_class = UserForm template_name = 'some_template.html'# template<form action="/your-name/" method="post"> {% csrf_token %} {{ form.as_p }} <input type="submit" value="Submit"></form># Also you can remove the signal related codes from Profile Model as well