﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
28040	SplitArrayWidget isn't updated for template-based widget rendering	Dariusz Paluch	nobody	"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 = ''
{{{
"	Bug	new	contrib.postgres	1.11	Release blocker				Accepted	0	0	0	0	0	0
