#28040: SplitArrayWidget isn't updated for template-based widget rendering ----------------------------------+------------------------------------ Reporter: Dariusz Paluch | Owner: nobody Type: Bug | Status: new Component: contrib.postgres | Version: 1.11 Severity: Release blocker | Resolution: Keywords: | Triage Stage: Accepted Has patch: 0 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 ----------------------------------+------------------------------------ Description changed by dpaluch-rp:
Old description: > Error: `AttributeError: 'SplitArrayWidget' object has no attribute > 'template_name'`. > > Traceback: > > {{{ > > Template error: > In template > /home/vagrant/apps/pg/python/templates/shared/partials/structure.html, > error at line 0 > 'SplitArrayWidget' object has no attribute 'template_name' 1 : {% > load static_files %} > 2 : {% spaceless %} > 3 : <!DOCTYPE html> > 4 : <html lang="pl" itemscope > itemtype="http://schema.org/Organization" {% block html_attrs %}{% > endblock html_attrs %} {% block tracking_scripts %}data-pg="google-tag- > manager" data-config-google-tag-manager="googleTagManager"{% endblock > tracking_scripts %}> > 5 : <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#"> > 6 : <meta charset="utf-8"> > 7 : <meta http-equiv="X-UA-Compatible" content="IE=edge"> > 8 : {% block head %} > 9 : > 10 : {% block meta %} > > Traceback: > > File "/usr/local/lib/python3.4/dist- > packages/django/core/handlers/exception.py" in inner > 41. response = get_response(request) > > File "/usr/local/lib/python3.4/dist- > packages/django/core/handlers/base.py" in _get_response > 217. response = self.process_exception_by_middleware(e, > request) > > File "/usr/local/lib/python3.4/dist- > packages/django/core/handlers/base.py" in _get_response > 215. response = response.render() > > File "/usr/local/lib/python3.4/dist-packages/django/template/response.py" > in render > 107. self.content = self.rendered_content > > File "/usr/local/lib/python3.4/dist-packages/django/template/response.py" > in rendered_content > 84. content = template.render(context, self._request) > > File "/usr/local/lib/python3.4/dist- > packages/django/template/backends/django.py" in render > 66. return self.template.render(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > render > 207. return self._render(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > _render > 199. return self.nodelist.render(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > render > 990. bit = node.render_annotated(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > render_annotated > 957. return self.render(context) > > File "/usr/local/lib/python3.4/dist- > packages/django/template/loader_tags.py" in render > 177. return compiled_parent._render(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > _render > 199. return self.nodelist.render(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > render > 990. bit = node.render_annotated(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > render_annotated > 957. return self.render(context) > > File "/usr/local/lib/python3.4/dist- > packages/django/template/loader_tags.py" in render > 177. return compiled_parent._render(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > _render > 199. return self.nodelist.render(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > render > 990. bit = node.render_annotated(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > render_annotated > 957. return self.render(context) > > File "/usr/local/lib/python3.4/dist- > packages/django/template/loader_tags.py" in render > 177. return compiled_parent._render(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > _render > 199. return self.nodelist.render(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > render > 990. bit = node.render_annotated(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > render_annotated > 957. return self.render(context) > > File "/usr/local/lib/python3.4/dist- > packages/django/template/defaulttags.py" in render > 411. return > strip_spaces_between_tags(self.nodelist.render(context).strip()) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > render > 990. bit = node.render_annotated(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > render_annotated > 957. return self.render(context) > > File "/usr/local/lib/python3.4/dist- > packages/django/template/loader_tags.py" in render > 72. result = block.nodelist.render(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > render > 990. bit = node.render_annotated(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > render_annotated > 957. return self.render(context) > > File "/usr/local/lib/python3.4/dist- > packages/django/template/loader_tags.py" in render > 72. result = block.nodelist.render(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > render > 990. bit = node.render_annotated(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in > render_annotated > 957. return self.render(context) > > File "/usr/local/lib/python3.4/dist-packages/django/template/library.py" > in render > 225. _dict = self.func(*resolved_args, **resolved_kwargs) > > File > "/home/vagrant/apps/pg/python/apps/shared/forms/templatetags/forms.py" in > render_field > 85. if not field: > > File "/usr/local/lib/python3.4/dist-packages/django/forms/boundfield.py" > in __len__ > 64. return len(self.subwidgets) > > File "/usr/local/lib/python3.4/dist-packages/django/utils/functional.py" > in __get__ > 35. res = instance.__dict__[self.name] = self.func(instance) > > File "/usr/local/lib/python3.4/dist-packages/django/forms/boundfield.py" > in subwidgets > 57. for widget in > self.field.widget.subwidgets(self.html_name, self.value(), attrs=attrs) > > File "/usr/local/lib/python3.4/dist-packages/django/forms/boundfield.py" > in <genexpr> > 56. BoundWidget(self.field.widget, widget, > self.form.renderer) > > File "/usr/local/lib/python3.4/dist-packages/django/forms/widgets.py" in > subwidgets > 191. context = self.get_context(name, value, attrs) > > File "/usr/local/lib/python3.4/dist-packages/django/forms/widgets.py" in > get_context > 212. 'template_name': self.template_name, > > Exception Type: AttributeError at /xxxx/ > Exception Value: 'SplitArrayWidget' object has no attribute > 'template_name' > > }}} > > I'm temporary fix this in my app by subclass django Widget and add > template_name property > > {{{ > from django.contrib.postgres import forms as postgres_forms > > class SplitArrayWidget(postgres_forms.SplitArrayWidget): > template_name = '' > {{{ New description: Error: `AttributeError: 'SplitArrayWidget' object has no attribute 'template_name'`. Traceback: {{{ Template error: In template /home/vagrant/apps/pg/python/templates/shared/partials/structure.html, error at line 0 'SplitArrayWidget' object has no attribute 'template_name' 1 : {% load static_files %} 2 : {% spaceless %} 3 : <!DOCTYPE html> 4 : <html lang="pl" itemscope itemtype="http://schema.org/Organization" {% block html_attrs %}{% endblock html_attrs %} {% block tracking_scripts %}data-pg="google-tag-manager" data-config-google-tag- manager="googleTagManager"{% endblock tracking_scripts %}> 5 : <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#"> 6 : <meta charset="utf-8"> 7 : <meta http-equiv="X-UA-Compatible" content="IE=edge"> 8 : {% block head %} 9 : 10 : {% block meta %} Traceback: File "/usr/local/lib/python3.4/dist- packages/django/core/handlers/exception.py" in inner 41. response = get_response(request) File "/usr/local/lib/python3.4/dist-packages/django/core/handlers/base.py" in _get_response 217. response = self.process_exception_by_middleware(e, request) File "/usr/local/lib/python3.4/dist-packages/django/core/handlers/base.py" in _get_response 215. response = response.render() File "/usr/local/lib/python3.4/dist-packages/django/template/response.py" in render 107. self.content = self.rendered_content File "/usr/local/lib/python3.4/dist-packages/django/template/response.py" in rendered_content 84. content = template.render(context, self._request) File "/usr/local/lib/python3.4/dist- packages/django/template/backends/django.py" in render 66. return self.template.render(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in render 207. return self._render(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in _render 199. return self.nodelist.render(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in render 990. bit = node.render_annotated(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in render_annotated 957. return self.render(context) File "/usr/local/lib/python3.4/dist- packages/django/template/loader_tags.py" in render 177. return compiled_parent._render(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in _render 199. return self.nodelist.render(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in render 990. bit = node.render_annotated(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in render_annotated 957. return self.render(context) File "/usr/local/lib/python3.4/dist- packages/django/template/loader_tags.py" in render 177. return compiled_parent._render(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in _render 199. return self.nodelist.render(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in render 990. bit = node.render_annotated(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in render_annotated 957. return self.render(context) File "/usr/local/lib/python3.4/dist- packages/django/template/loader_tags.py" in render 177. return compiled_parent._render(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in _render 199. return self.nodelist.render(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in render 990. bit = node.render_annotated(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in render_annotated 957. return self.render(context) File "/usr/local/lib/python3.4/dist- packages/django/template/defaulttags.py" in render 411. return strip_spaces_between_tags(self.nodelist.render(context).strip()) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in render 990. bit = node.render_annotated(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in render_annotated 957. return self.render(context) File "/usr/local/lib/python3.4/dist- packages/django/template/loader_tags.py" in render 72. result = block.nodelist.render(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in render 990. bit = node.render_annotated(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in render_annotated 957. return self.render(context) File "/usr/local/lib/python3.4/dist- packages/django/template/loader_tags.py" in render 72. result = block.nodelist.render(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in render 990. bit = node.render_annotated(context) File "/usr/local/lib/python3.4/dist-packages/django/template/base.py" in render_annotated 957. return self.render(context) File "/usr/local/lib/python3.4/dist-packages/django/template/library.py" in render 225. _dict = self.func(*resolved_args, **resolved_kwargs) File "/home/vagrant/apps/pg/python/apps/shared/forms/templatetags/forms.py" in render_field 85. if not field: File "/usr/local/lib/python3.4/dist-packages/django/forms/boundfield.py" in __len__ 64. return len(self.subwidgets) File "/usr/local/lib/python3.4/dist-packages/django/utils/functional.py" in __get__ 35. res = instance.__dict__[self.name] = self.func(instance) File "/usr/local/lib/python3.4/dist-packages/django/forms/boundfield.py" in subwidgets 57. for widget in self.field.widget.subwidgets(self.html_name, self.value(), attrs=attrs) File "/usr/local/lib/python3.4/dist-packages/django/forms/boundfield.py" in <genexpr> 56. BoundWidget(self.field.widget, widget, self.form.renderer) File "/usr/local/lib/python3.4/dist-packages/django/forms/widgets.py" in subwidgets 191. context = self.get_context(name, value, attrs) File "/usr/local/lib/python3.4/dist-packages/django/forms/widgets.py" in get_context 212. 'template_name': self.template_name, Exception Type: AttributeError at /xxxx/ Exception Value: 'SplitArrayWidget' object has no attribute 'template_name' }}} I'm temporary fix this in my app by subclass django Widget and add template_name property {{{ from django.contrib.postgres import forms as postgres_forms class SplitArrayWidget(postgres_forms.SplitArrayWidget): template_name = '' }}} -- -- Ticket URL: <https://code.djangoproject.com/ticket/28040#comment:4> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/064.5bd7c7c1586ef39f9d444b2a36436643%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.