def _handle_search_param(self):
search_param = self.params.get('search')
if not search_param:
return
fields = [f.name for f in self.model._meta.get_fields() if not f.is_relation]
q_list = [Q(**{'%s__icontains' % f : search_param}) for f in fields]
related = [f for f in self.model._meta.get_fields() if isinstance(f, ForeignKey)]
for rel in related:
model = rel.related_model
r_fields = [f.name for f in model._meta.get_fields() if not f.is_relation]
q_list += [Q(**{'%s__%s__icontains' % (rel.name, r_field): search_param}) for r_field in r_fields]
search_filter = reduce(OR, q_list)
return search_filter
评论列表
文章目录