python - 'RadioSelect' object has no attribute 'renderer' -


i have made web site seeing django tutorial. https://docs.djangoproject.com/en/1.11/intro/

i got error,

attributeerror @ /polls/1/ 'radioselect' object has no attribute 'renderer'  

it happens in line 21 of forms.py,which init. wrote in forms.py like

from django import forms  class myform(forms.form):     text = forms.charfield(max_length=100,required=false,label='テキスト')  class voteform(forms.form):     choice = forms.modelchoicefield(         queryset=none,         label='選択',         widget=forms.radioselect,         empty_label=none,         error_messages={             'required':"you didn't select choice.",             'invalid_choice':"invalid choice.",         },     )      def __init__(self,question,*args,**kwargs):         super().__init__(*args,**kwargs)         self.fields['choice'].queryset = question.choice_set.all()         self.fields['choice'].widget.renderer.inner_html = '{choice_value}{sub_widgets}<br>' 

setting of radio button written in detail.html,like

<!doctype html> <h1>{{ question.question_text }}</h1> {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}  <form action="{% url 'poll_vote' question.id %}" method="post"> <!--<form action="" method="post">-->     {% csrf_token %}     {% choice in question.choice_set.all %}     <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />     <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />     {% endfor %}     <!--{{ form }}-->     <input type="submit" value="vote" /> </form> </html> 

views.py is

from django.shortcuts import render django.utils.html import mark_safe .models import question django.http import httpresponse django.shortcuts import http404 django.shortcuts import get_object_or_404,redirect .models import choice django.views.generic import templateview django.views.generic import detailview django.views.generic import listview .forms import myform .forms import voteform   # create views here. def index(request):     return render(request,'polls/index.html',{         'questions': question.objects.all(),     })  def detail(request,pk):     obj = get_object_or_404(question,pk=pk)     if request.method == "post":         form = voteform(question=obj,data=request.post)         if form.is_valid():             return redirect('polls:results',pk)     else:         form = voteform(question=obj)     return render(request,'templates/polls/detail.html',{         'form':form,         'question': obj,     })  def vote(request,pk):     pass  def results(request,pk):     obj = get_object_or_404(question,pk=pk)     return render(request,'polls/results.html',{         'question':obj,     })  def form_test(request):     if request.method == "post":         #request.post???         form = myform(data=request.post)         if form.is_valid():             pass     else:         form = myform()     return render(request,'polls/form.html',{         'form':form,     }) 

traceback like

traceback: file "/users/xxx/django/django/core/handlers/exception.py" in inner 35. response = get_response(request) file "/users/xxx/django/django/core/handlers/base.py" in _get_response 130. response = self.process_exception_by_middleware(e, request)  file "/users/xxx/django/django/core/handlers/base.py" in _get_response 128. response = wrapped_callback(request, *callback_args, **callback_kwargs) file "/users/xxx/djangostudy/polls/views.py" in detail 40. form = voteform(question=obj) file "/users/xxxi/djangostudy/polls/forms.py" in init 21. self.fields['choice'].widget.renderer.inner_html = '{choice_value}{sub_widgets}<br>' exception type: attributeerror @ /polls/1/ exception value: 'radioselect' object has no attribute 'renderer' 

i not know how fix it.i cannot understand why error happen. should fix this?

you see have here:

>>> django import forms >>> myapp.models import vote >>>  >>> class voteform(forms.form): ...     choice = forms.modelchoicefield( ...             queryset=vote.objects.all(), ...             widget=forms.radioselect() ...     ) ...  >>>  >>> f = voteform() >>>  >>> f.fields['choice'] <django.forms.models.modelchoicefield object @ 0xb64ec3ec> >>> >>> f.fields['choice'].widget.renderer traceback (most recent call last):   file "<console>", line 1, in <module> attributeerror: 'radioselect' object has no attribute 'renderer' >>>  

you getting traceback attributeerror: 'radioselect' object has no attribute 'renderer' because renderer isn't available:

>>> dir(f.fields['choice'].widget) ['__class__', '__deepcopy__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slotnames__', '__str__',  '__subclasshook__', '__weakref__', '_format_value', '_render',  'add_id_index', 'allow_multiple_selected', 'attrs', 'build_attrs', 'checked_attribute', 'choices', 'create_option', 'format_value', 'get_context', 'id_for_label', 'input_type', 'is_hidden', 'is_localized', 'is_required', 'media', 'needs_multipart_form', 'optgroups',  'option_inherits_attrs', 'option_template_name', 'options', 'render', 'subwidgets', 'supports_microseconds', 'template_name', 'use_required_attribute', 'value_from_datadict', 'value_omitted_from_data'] >>>  

but here found render , _render functions:

>>> f.fields['choice'].widget.render <bound method widget.render of <django.forms.widgets.radioselect object @ 0xb64ec4ac>> >>>  >>> f.fields['choices'].widget._render <bound method widget._render of <django.forms.widgets.radioselect object @ 0xb64ec4ac>> >>>  

i don't know why need function .inner_html, , expect do.

maybe documentation customizing form template useful you.


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -