用户名&电子邮件和性别以及年与月和日可以在我的app中注册。我在views.py中写道
def regist_save(request):
regist_form = RegisterForm(request.POST or None)
profile_form = ProfileForm(request.POST or None)
context = {
'regist_form': regist_form,
'profile_form': profile_form,
}
if request.method == "POST" and regist_form.is_valid() and profile_form.is_valid():
try:
username = regist_form.cleaned_data.get('username', None)
email = regist_form.cleaned_data.get('email', None)
user = User.objects.get(Q(username=username) | Q(email=email))
messages.warning(request, 'That detailed use is already available.')
return render(request, 'registration/regist.html', context)
except User.DoesNotExist:
regist = regist_form.save(commit=False)
regist.is_staff = True
regist.save()
profile = profile_form.save(commit=False)
profile.user = regist
sex = request.POST.get("sex", "")
profile.sex = sex
profile.save()
return render(request, 'registration/detail.html')
else:
print(regist_form.errors)
print(profile_form.errors)
return render(request, 'registration/regist.html', context)
在forms.py
中class ProfileForm(forms.ModelForm):
class Meta:
model = NewUser
fields = (
"sex"
)
在models.py
中class NewUser(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
sex = models.CharField(max_length=100,null=True, blank=True, default=None)
当我选择性别时,请输入用户名&发送电子邮件并将REGIST按钮放入浏览器,这些数据被注册。但是,现在如果我不选择性别,数据会被注册。我想制作一个系统强制性别数据,但当前的系统是不同的。我的代码有什么问题?为什么views.py中的profile_form.is_valid()有效?我该如何解决这个问题?
答案 0 :(得分:0)
在
中指定blank=True
sex = models.CharField(max_length=100,null=True, blank=True, default=None)
您告诉Django sex
字段在表单中是可选的。尝试删除它。