BooleanField возвращает "on" вместо True / False - PullRequest
0 голосов
/ 17 июня 2020

У меня есть логическое поле, которое возвращает «on» вместо True / False.

Когда я печатаю request.POST queryDict, я получаю что-то вроде этого:

 <QueryDict: {is_superuser': ['on']}>`

Это это моя форма:

class UserCreateForm(UserCreationForm):
    is_superuser = forms.BooleanField(label = 'Superuser', initial = False, required = False)

    class Meta():
        fields = ('first_name', 'last_name', 'email', 'departments', 'password1', 'password2', 'is_superuser')
        model = get_user_model()

    def clean_is_superuser(self):
        return self.cleaned_data['is_superuser'] == True

Мое мнение:

class SignUpView(View):
    def get(self, request, *args, **kwargs):
        return render(request, 'accounts/signup.html', context = {'form':UserCreateForm})

    def post(self, request, *args, **kwargs):
        form = UserCreateForm(request.POST)

        if form.is_valid():
            user = form.save(commit = False)
            user.username = request.POST.get('email')
            user.is_superuser = request.POST.get('is_superuser')
            print(request.POST)
            user.save()

            return HttpResponseRedirect(reverse_lazy('accounts:allProfilesPage'))
        return HttpResponse('Form not valid')

Почему логическое поле не передает True или False? Я даже использовал функцию чистых данных ..

1 Ответ

0 голосов
/ 17 июня 2020

Как уже ответил @Arakkal Abu:

class SignUpView(View):
    def get(self, request, *args, **kwargs):
        return render(request, 'accounts/signup.html', context = {'form':UserCreateForm})

    def post(self, request, *args, **kwargs):
        form = UserCreateForm(request.POST)

        if form.is_valid():
            user = form.save(commit = False)
            user.username = form.cleaned_data['email']
            user.is_superuser = form.cleaned_data['is_superuser']

            user.save()

            user.departments.set(form.cleaned_data['departments'])

            return HttpResponseRedirect(reverse_lazy('accounts:allProfilesPage'))
        return HttpResponse('Form not valid')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...