Django error: "'ChoiceField' object has no attribute 'is_hidden'"
17,408
ChoiceField
is not a widget - it is a form field:
class CallForm (forms.ModelForm):
employee_id = forms.ChoiceField(choices=FormsTools.EmployeesToTuples(Employee.objects.all()))
class Meta:
model = Call
fields = ['employee_id']
Author by
user2216190
Updated on July 14, 2022Comments
-
user2216190 almost 2 years
Django template throws 'AttributeError' when rendering..What I want to achive is that in the template the resolted forn will contain a select box with the values from the list below.
Here's the
Forms.py
file:class CallForm (forms.ModelForm): class Meta(): model = Call widgets = { 'employee_id' : forms.ChoiceField(choices=FormsTools.EmployeesToTuples(Employee.objects.all())) }
Explanation:
FormsTools.EmployeesToTuples(Employee.objects.all()) --> [(1, u'E1'), (2, u'E2'), (3, u'E3')]
Here is django's error:
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'
What's cosing that 'AttributeError' ? How can it be fixed? Thanks.
-
user2216190 almost 10 yearsWhat is the right way to do it? How can I transfer it to widget?
-
user2216190 almost 10 yearscan you explain in short what the purpose of widgets then?
-
alecxe almost 10 years@user2216190 glad it worked. Basically widgets control representation of the field on the web page, widgets deal with rendering of the HTML form, docs are pretty detailed about them.