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,' }}>&nbsp;    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 :                   &nbsp;    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 :         &nbsp;  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

Popular posts from this blog

java - Spring Data JPA: Why findOne(id) executing delete query internally? -

python - Mongodb How to add addtional information when aggregating? -

java - Incorrect order of records in M-M relationship in hibernate -