请帮助解决这个问题。
我创建了一个表单来注册用户。我需要用户在注册后可以访问管理面板。为此,我尝试重写字段is_staff的值:
class RegistrationForm(UserCreationForm):
is_staff = forms.CharField(
default=True,
widget=forms.HiddenInput(),
)
class Meta:
model = User
fields = (
'username',
'email',
'password1',
'password2',
'is_staff',
)视图:
def registration(request):
"""
ajax refistration procedure
"""
result = False
form = RegistrationForm()
if request.method == 'POST' and request.is_ajax():
form = RegistrationForm(request.POST)
if form.is_valid():
try:
new_user = form.save()
except:
pass
else:
result = True
data = {
'result': result,
}
return HttpResponse(json.dumps(data), content_type='application/json') 问题是浏览器显示以下错误消息:
TypeError at /
__init__() got an unexpected keyword argument 'default' Request Method: GET Request URL: Django Version: 1.6.8
Exception Type: TypeError Exception Value:
__init__() got an unexpected keyword argument 'default' Exception Location: /home/kalinins/.virtualenvs/kinopom_project/kinopom_env/local/lib/python2.7/site-packages/django/forms/fields.py
in __init__, line 198发布于 2014-11-06 13:09:15
您得到的错误意味着在创建default=True字段时关键字参数is_staff是不正确的。
您应该使用initial=True而不是指定初始值。
此外,您正在为is_staff字段使用一个is_staff字段,该字段应该是一个布尔值(so forms.BooleanField)。在此之后,它将显示为一个勾选框,而不是文本字符的字段。
https://stackoverflow.com/questions/26780180
复制相似问题