2014-11-06 306 views
0

请帮忙解决问题。允许用户访问管理员?

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

这个问题与允许用户访问管理界面没有任何关系。 – 2014-11-06 13:10:12

回答

2

的您收到错误意味着创建is_staff字段时,关键字参数default=True不正确。您应该使用initial=True而不是to specify an initial value

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

相关问题