python - Django list_filter query set return, ValueError: too many values to unpack -
i'm constructing self filter in site admin app django, users contains in array field value in especified. i'm couldn't implement cause return error.
this model:
class profile(model): """ profile """ code = charfield( max_length = 32, verbose_name = (_(u"código")), blank = true, ) user = foreignkey(user, verbose_name = (_('usuario')), related_name = 'profile', blank = false, unique = true, ) country = countryfield( verbose_name = (_(u"país")), blank = false, default = 'co', ) preferences = charfield( max_length = 500, verbose_name = (_(u"preferencias")), blank = true, ) etc... this admin registeer model:
class profileadmin(exportmixin, modeladmin): list_display = ( 'id', 'user', 'first_name', 'last_name', 'country', 'isteacher', 'purchased', 'purchaseddetails', 'referred', 'moneyspent', 'likescount', 'created', 'preferences', ) list_filter = ( 'country', 'referred', preferencesfilter, ) search_fields = ( 'user__username', 'user__first_name', 'user__last_name', ) site.register(profile, profileadmin) where preferencesfilter funtion is:
class preferencesfilter(simplelistfilter): title = _('preferencias') parameter_name = 'preferencias' def lookups(self, request, model_admin): return [preferences1 + preferences2] def queryset(self, request, queryset): if not self.value(): return queryset return queryset.filter(preferences__contains=[self.value()]) the values preferences1 , preferences2 are:
preferences1 = ( ('croché', 'croché'), ('patchwork', 'patchwork'), ('muñecos decorativos', 'muñecos decorativos'), ('tejido dos agujas', 'tejido dos agujas') ) preferences2 = ( ('arreglos florales', 'arreglos florales'), ('peinados', 'peinados'), ('decoración de uñas', 'decoración de uñas') ) but when make search filter app return stacktrace:
template error: in template /env/local/lib/python2.7/site-packages/suit/templates/admin/search_form.html, error @ line 17 many values unpack 7 : {% if cl.search_fields %} 8 : <input type="text" size="40" name="{{ search_var }}" value="{{ cl.query }}" id="searchbar" placeholder="{% block search_placeholder %}{% trans 'keyword'|capfirst %}{% endblock %}"{{ cl.query|yesno:' class=active,' }}> 9 : <script type="text/javascript">document.getelementbyid("searchbar").focus();</script> 10 : {% endif %} 11 : {% spaceless %} 12 : {% if cl.has_filters %} 13 : {% block filters %} 14 : {% if cl.has_filters %} 15 : <span class="search-filters"> 16 : {% spec in cl.filter_specs %} 17 : {% suit_list_filter_select cl spec %} 18 : 19 : {% endfor %} 20 : </span> 21 : {% endif %} 22 : {% endblock %} 23 : {% endif %} 24 : {% endspaceless %} 25 : 26 : <input type="submit" value="{% trans 'search' %}" class="btn btn-info"/> 27 : traceback: file "/env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 137. response = response.render() file "/env/local/lib/python2.7/site-packages/django/template/response.py" in render 105. self.content = self.rendered_content file "/env/local/lib/python2.7/site-packages/django/template/response.py" in rendered_content 82. content = template.render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 140. return self._render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in _render 134. return self.nodelist.render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) file "/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) file "/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 123. return compiled_parent._render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in _render 134. return self.nodelist.render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) file "/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) file "/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 123. return compiled_parent._render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in _render 134. return self.nodelist.render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) file "env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) file "/home/kperez/desarrollo/www.pleisi.com/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 123. return compiled_parent._render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in _render 134. return self.nodelist.render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) file "/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) file "/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 62. result = block.nodelist.render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) file "/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) file "/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 62. result = block.nodelist.render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) file "/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) file "/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 62. result = block.nodelist.render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) file "/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) file "/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 62. result = block.nodelist.render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) file "/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 1220. return self.nodelist.render(new_context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) file "/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) file "/env/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render 305. return nodelist.render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) file "/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) file "/env/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render 389. return strip_spaces_between_tags(self.nodelist.render(context).strip()) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) file "/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) file "/env/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render 305. return nodelist.render(context) file "env/local/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) file "/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) file "/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 53. result = self.nodelist.render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) file "/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) file "/env/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render 305. return nodelist.render(context) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) file "/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) file "/env/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render 196. nodelist.append(node.render(context)) file "/env/local/lib/python2.7/site-packages/django/template/base.py" in render 1125. return func(*resolved_args, **resolved_kwargs) file "/env/local/lib/python2.7/site-packages/suit/templatetags/suit_list.py" in suit_list_filter_select 113. choices = list(spec.choices(cl)) file "/env/local/lib/python2.7/site-packages/django/contrib/admin/filters.py" in choices 103. lookup, title in self.lookup_choices: exception type: valueerror @ /site/accounts/profile/ exception value: many values unpack what i'm doing bad, or should solve trouble.
i haven't used custom filter, guess line
return queryset.filter(preferences__contains=[self.value()]) is causing problem
contains should single value, not array. did try?
return queryset.filter(preferences__contains=self.value()) edit:
ok , see problem now:
you trying append 2 tuples list. tuples imutable, , syntax using isn't going concatenate them list.
change lookups :
def lookups(self, request, model_admin): newlist = list(preferences1) newlist.extend( list(preferences2)) return newlist
Comments
Post a Comment