From 267c41f06d9c19c5a73d4e0ae7aa3cf9e5a9fbd9 Mon Sep 17 00:00:00 2001 From: David McCann Date: Tue, 14 Sep 2010 12:57:26 +0300 Subject: [PATCH] add Q modification to exclude() as well as filter --- managers.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/managers.py b/managers.py index 1e739e6..5887c16 100644 --- a/managers.py +++ b/managers.py @@ -103,8 +103,12 @@ class EntityManager(models.Manager): return qs def exclude(self, *args, **kwargs): - qs = self.get_query_set().exclude(*args) cls = self.model + for arg in args: + if isinstance(arg, Q): + # modify Q objects in-place (warning: recursion ahead) + expand_q_filters(arg, cls) + qs = self.get_query_set().exclude(*args) for lookup, value in kwargs.items(): lookups = self._filter_by_lookup(qs, lookup, value) updated_lookup, extra_filters = expand_filter_string(cls, lookup)