[Fixed]-Django Q set too many values to unpack


Try this:

Q(**{fieldname + '__contains': myString})

This is equivalent to providing a keyword argument, as you normally would when instantiating a Q object. For example:

Q(fieldname__contains=myString, another_fieldname__contains=myOtherstring)

The Q object essentially needs pairs of values to work. Looking at the code it seems you can also use tuples of length two, like this (I haven’t tested, though):

Q(("fieldname__contains", myString), ("another_fieldname__contains", myOtherString))


What is the model you are querying? It looks like you left that out.

The last line,

objects = objects.filter(reduce(operator.or_, q_objects))

Should be something like

objects = MyModel.objects.filter(...)

Leave a comment