def filter(self):
filter_dict = {}
matcher = re.compile(r'filter\[(.+)\]')
for key in self.request.query_arguments:
match = matcher.match(key)
if match:
if match.groups()[-1] in {'ref'}:
filter_dict[match.groups()[-1]] = self.request.query_arguments[key][-1].decode()
else:
filter_dict['data.{}'.format(match.groups()[-1])] = self.request.query_arguments[key][-1].decode()
if not filter_dict:
return None
return functools.reduce(operator.and_, [
jam.Q(key, 'eq', parse_value(value))
for key, value in filter_dict.items()
])
评论列表
文章目录