from django.db.models import Manager, Q, QAnd, QOr, QNot
def get_query(obj):
if isinstance(obj, Manager):
return obj.query
return obj
class CustomQueryManager(Manager):
def __init__(self, query=None):
if query:
self.query = query
Manager.__init__(self)
def __and__(self, q):
return self.__class__(self.query & get_query(q))
def __or__(self, q):
return self.__class__(self.query | get_query(q))
def not_(self):
return self.__class__(QNot(self.query))
def get_query_set(self):
return Manager.get_query_set(self).filter(self.query)
Comments