search.py 文件源码

python
阅读 37 收藏 0 点赞 0 评论 0

项目:django-elasticsearch-dsl-drf 作者: barseghyanartur 项目源码 文件源码
def construct_nested_search(self, request, view):
        """Construct nested search.

        :param request: Django REST framework request.
        :param queryset: Base queryset.
        :param view: View.
        :type request: rest_framework.request.Request
        :type queryset: elasticsearch_dsl.search.Search
        :type view: rest_framework.viewsets.ReadOnlyModelViewSet
        :return: Updated queryset.
        :rtype: elasticsearch_dsl.search.Search
        """
        if not hasattr(view, 'search_nested_fields'):
            return []

        query_params = self.get_search_query_params(request)
        __queries = []
        for search_term in query_params:
            for path, fields in view.search_nested_fields.items():
                queries = []
                for field in fields:
                    field_key = "{}.{}".format(path, field)
                    queries.append(
                        Q("match", **{field_key: search_term})
                    )

                __queries.append(
                    Q("nested",
                      path=path,
                      query=six.moves.reduce(operator.or_, queries)
                      )
                )

        return __queries
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号