我想做一个系统表单的列的数据是必需的

2024-04-19 19:42:58 发布

您现在位置:Python中文网/ 问答频道 /正文

用户名和;电子邮件和性与健康;年及;每月及;可以在我的应用程序中注册日期。我在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)

当我选择性别时,写下用户名&;通过电子邮件和浏览器中的“放置注册表”按钮,这些数据被注册。但是,现在如果我不选择“性别”,数据被注册。我想让一个系统强制放置性别数据,但当前的系统不同。我的代码中有什么错误?为什么profile\u form.views.py中的profile\u valid()有效?我应该如何解决这个问题


Tags: pyformnonegetismodelsemailrequest