def filter(self, **kwargs):
        # print "enter filter: old query = %s" % self.query
        clone = self._clone()

        for param_name, param_value in kwargs.iteritems():
            new_condition = BaseSearchQuery()

            if param_name == 'content':
                # print "fields = %s" % self.fields

                for field_name, field_object in self.fields.iteritems():
                    if isinstance(field_object, CharField):
                        this_query = {field_name: param_value}
                        new_condition.add_filter(SQ(**this_query), use_or=True)

                # result = self.__and__(dj)
                clone.query.combine(new_condition, SQ.AND)

            elif getattr(param_value, '__iter__', None):
                for possible_value in param_value:
                    this_query = {param_name: possible_value}
                    new_condition.add_filter(SQ(**this_query), use_or=True)

                clone.query.combine(new_condition, SQ.AND)

            else:
                this_query = {param_name: param_value}
                clone.query.add_filter(SQ(**this_query))

        # print "exit filter: new query = %s" % self.query
        return clone
示例#2
0
 def setUp(self):
     super(BaseSearchQueryTestCase, self).setUp()
     self.bsq = BaseSearchQuery()
示例#3
0
 def setUp(self):
     super(BaseSearchQueryTestCase, self).setUp()
     self.bsq = BaseSearchQuery(backend=DummySearchBackend())
示例#4
0
 def setUp(self):
     super().setUp()
     self.bsq = BaseSearchQuery()