【发布时间】:2020-06-17 14:53:17
【问题描述】:
我有一个布尔字段返回“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?我什至使用了干净的数据功能..
【问题讨论】:
-
为什么你使用
is_superuser的值来自request.POST而不是来自表单?此外,我不认为你的clean_is_superuser()会在任何地方被调用...... -
你是对的!我很抱歉.. 昨天我问了一个基本问题,也是你回答了我.. 谢谢你这么宽容。你说得对,“干净”函数没有做任何事情。我只是认为布尔字段可能返回一些其他值而不是 False