允许用户访问adminpanel?

时间:2014-11-06 13:02:09

标签: python django

请帮助解决问题。

我创建了一个注册用户的表单。我需要用户在注册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

1 个答案:

答案 0 :(得分:2)

您获得的错误表示创建default=True字段时关键字参数is_staff不正确。

您应该使用initial=True代替to specify an initial value

此外,您使用forms.CharField作为is_staff字段,可能应该是布尔值(因此forms.BooleanField)。之后,它将显示为复选框,而不是文本字符的字段。