From e187e1ef67e515431b95d3f84d758745b4d97f1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Fri, 16 Jun 2017 10:15:28 +0200 Subject: [PATCH] when queueing a filter command cast iterables of __in values to tuples --- src/c3nav/editor/wrappers.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/c3nav/editor/wrappers.py b/src/c3nav/editor/wrappers.py index ae2208ce..0b9fbe8e 100644 --- a/src/c3nav/editor/wrappers.py +++ b/src/c3nav/editor/wrappers.py @@ -1,5 +1,5 @@ import typing -from collections import deque +from collections import Iterable, deque from functools import wraps from itertools import chain @@ -213,6 +213,9 @@ def modifies_query(f): def wrapper(self, *args, execute=False, **kwargs): if execute: return f(self, *args, **kwargs) + if f.__name__ in ('filter', 'exclude'): + kwargs = {name: (tuple(value) if name.endswith('__in') and isinstance(value, Iterable) else value) + for name, value in kwargs.items()} qs = self._wrap_queryset(self.get_queryset(), add_command=(f.__name__, args, kwargs)) qs.execute_commands() return qs