当我提交一个包含用户信息(用户名,电子邮件,密码)和用户配置文件(名字和姓氏)并呼叫保存的注册表单像我的views.py中的form.save()
和profileform.save()
然后所有似乎都很好,我没有得到任何错误。Django - 创建两个配置文件而不是一个的用户和用户配置文件表单
但是,当我进入Django Admin时,我看到用户配置文件和配置文件已分别保存。
所以这是两个不同的配置文件,一个包含我在表单中输入的用户名,和其他与第一和最后一个名称(如图像显示器)。
这是我的views.py:
def signup(request):
if request.method == 'POST':
form = UserRegistrationForm(data=request.POST)
profileform = UserRegistrationProfileForm(data=request.POST)
if form.is_valid() and profileform.is_valid():
user = form.save()
profileform.save()
if user is not None:
if user.is_active:
user_login(request, user, backend='django.contrib.auth.backends.ModelBackend')
return redirect('/dashboard/')
else:
form = UserRegistrationForm()
profileform = UserRegistrationProfileForm()
return render(request, 'signup-user.html', {'form': form, 'profileform': profileform})
Forms.py(对于形式的轮廓部分):
class UserRegistrationProfileForm(forms.ModelForm):
user_fname = forms.CharField(#)
user_lname = forms.CharField(#)
class Meta:
model = UserProfileModel
fields = ['user_fname', 'user_lname']
def clean(self):
#...
def save(self, commit=True):
profile = super(UserRegistrationProfileForm, self).save(commit=False)
if commit:
profile.save()
return profile
Models.py(为简档,其包括接收器信号):
class UserProfileModel(models.Model): # For the Company Employees
user = models.OneToOneField(UserModel, related_name='userprofilemodel', on_delete=models.CASCADE, blank=True, null=True)
user_fname = models.CharField(max_length=30, verbose_name='First Names')
user_lname = models.CharField(max_length=30, verbose_name='Last Name')
class Meta:
verbose_name = 'Profile'
def __unicode__(self):
#...
def save(self, *args, **kwargs):
super(UserProfileModel, self).save(*args, **kwargs)
@receiver(post_save, sender=UserModel)
def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfileModel.objects.create(user=instance)
@receiver(post_save, sender=UserModel)
def save_user_profile(sender, instance, **kwargs):
instance.userprofilemodel.save()
我不知道我做错了吗?我希望表单创建一个用户配置文件,其中包含用户实例作为用户,以及名和姓。
关于我哪里出错的任何想法?
更新
这里的UserRegistrationForm
类:
class UserRegistrationForm(forms.ModelForm):
#
class Meta:
model = UserModel
fields = ['related_company_slug', 'username', 'user_email', 'password', 'passwordrepeat']
def clean(self):
#
def save(self, commit=True):
self.check_company
user = super(UserRegistrationForm, self).save(commit=False)
user.set_password(self.cleaned_data.get('password'))
user.is_active = True
if commit:
user.save()
return user
我们可以看到'UserRegistrationForm'类吗? –
我已更新我的问题@MattCremeens – jayt