2014-07-10 15 views
5

Django模板在渲染時拋出'AttributeError'。我想要存檔的是在模板中,解析後的forn將包含一個選擇框,下面的列表。Django錯誤:「'ChoiceField'對象沒有屬性'is_hidden'」

這裏的Forms.py文件:

class CallForm (forms.ModelForm): 

class Meta(): 
    model = Call 
    widgets = { 
     'employee_id' : forms.ChoiceField(choices=FormsTools.EmployeesToTuples(Employee.objects.all())) 
    } 

說明:

FormsTools.EmployeesToTuples(Employee.objects.all()) --> [(1, u'E1'), (2, u'E2'), (3, u'E3')] 

下面是Django的錯誤:

Template error: 
In template C:\virtualenv\#\#\templates\new_call.html, error at line 7 
    'ChoiceField' object has no attribute 'is_hidden' 
    1 : {% extends "base.html" %} 


    2 : 


    3 : {% block content %} 


    4 : 


    5 :   <form action="/NewCall/" method="post">{% csrf_token %} 


    6 :    <ul> 


    7 :     {{ form.as_p }} 


    8 :    </ul> 


    9 :    <input type="submit" name="submit" value="Add New Call"> 


    10 : 


    11 :   </form> 


    12 : 


    13 : {% endblock %} 

Traceback: 
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response 
    112.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "C:\virtualenv\OmegaManager2\OmegaManager\ServiceManager\views.py" in new_call 
    32.   html = t.render(Context(args)) 
File "C:\Python27\lib\site-packages\django\template\base.py" in render 
    140.    return self._render(context) 
File "C:\Python27\lib\site-packages\django\template\base.py" in _render 
    134.   return self.nodelist.render(context) 
File "C:\Python27\lib\site-packages\django\template\base.py" in render 
    840.     bit = self.render_node(node, context) 
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node 
    78.    return node.render(context) 
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render 
    123.   return compiled_parent._render(context) 
File "C:\Python27\lib\site-packages\django\template\base.py" in _render 
    134.   return self.nodelist.render(context) 
File "C:\Python27\lib\site-packages\django\template\base.py" in render 
    840.     bit = self.render_node(node, context) 
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node 
    78.    return node.render(context) 
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render 
    62.    result = block.nodelist.render(context) 
File "C:\Python27\lib\site-packages\django\template\base.py" in render 
    840.     bit = self.render_node(node, context) 
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node 
    78.    return node.render(context) 
File "C:\Python27\lib\site-packages\django\template\debug.py" in render 
    88.    output = self.filter_expression.resolve(context) 
File "C:\Python27\lib\site-packages\django\template\base.py" in resolve 
    585.     obj = self.var.resolve(context) 
File "C:\Python27\lib\site-packages\django\template\base.py" in resolve 
    735.    value = self._resolve_lookup(context) 
File "C:\Python27\lib\site-packages\django\template\base.py" in _resolve_lookup 
    789.        current = current() 
File "C:\Python27\lib\site-packages\django\forms\forms.py" in as_p 
    241.    errors_on_separate_row = True) 
File "C:\Python27\lib\site-packages\django\forms\forms.py" in _html_output 
    156.    if bf.is_hidden: 
File "C:\Python27\lib\site-packages\django\forms\forms.py" in is_hidden 
    560.   return self.field.widget.is_hidden 

Exception Type: AttributeError at /NewCall/ 
Exception Value: 'ChoiceField' object has no attribute 'is_hidden' 

什麼cosing那AttributeError的「?它如何被修復? 謝謝。

回答

10

ChoiceField不是一個小工具 - 這是一個form field

class CallForm (forms.ModelForm): 
    employee_id = forms.ChoiceField(choices=FormsTools.EmployeesToTuples(Employee.objects.all())) 

    class Meta: 
     model = Call 
     fields = ['employee_id'] 
+0

什麼是做正確的方式?我怎樣才能將它轉移到小部件? – user2216190

+0

@ user2216190正確的方法就是在裏面回答:) – alecxe

+0

你能簡單地解釋一下小部件的用途麼? – user2216190

相關問題