请帮助解决问题。
我创建了一个注册用户的表单。我需要用户在注册adminpanel后才能访问。为此,我试图覆盖字段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
答案 0 :(得分:2)
您获得的错误表示创建default=True
字段时关键字参数is_staff
不正确。
您应该使用initial=True
代替to specify an initial value。
此外,您使用forms.CharField
作为is_staff
字段,可能应该是布尔值(因此forms.BooleanField
)。之后,它将显示为复选框,而不是文本字符的字段。