django_elasticsearch_dsl_drf.filter_backends.ordering package¶
Submodules¶
django_elasticsearch_dsl_drf.filter_backends.ordering.common module¶
Ordering backend.
-
class
django_elasticsearch_dsl_drf.filter_backends.ordering.common.
DefaultOrderingFilterBackend
[source]¶ Bases:
rest_framework.filters.BaseFilterBackend
,django_elasticsearch_dsl_drf.filter_backends.ordering.common.OrderingMixin
Default ordering filter backend for Elasticsearch.
Make sure this is your last ordering backend.
Example:
>>> from django_elasticsearch_dsl_drf.filter_backends import ( >>> DefaultOrderingFilterBackend, >>> OrderingFilterBackend >>> ) >>> from django_elasticsearch_dsl_drf.viewsets import ( >>> BaseDocumentViewSet, >>> ) >>> >>> # Local article document definition >>> from .documents import ArticleDocument >>> >>> # Local article document serializer >>> from .serializers import ArticleDocumentSerializer >>> >>> class ArticleDocumentView(BaseDocumentViewSet): >>> >>> document = ArticleDocument >>> serializer_class = ArticleDocumentSerializer >>> filter_backends = [ >>> DefaultOrderingFilterBackend, >>> OrderingFilterBackend, >>> ] >>> ordering_fields = { >>> 'id': None, >>> 'title': 'title.raw', >>> 'date_submitted': 'date_submitted', >>> 'continent': { >>> 'field': 'continent.name.raw', >>> 'path': 'continent', >>> } >>> 'country': { >>> 'field': 'continent.country.name.raw', >>> 'path': 'continent.country', >>> } >>> 'city': { >>> 'field': 'continent.country.city.name.raw', >>> 'path': 'continent.country.city', >>> } >>> } >>> ordering = 'city'
-
filter_queryset
(request, queryset, view)[source]¶ Filter the queryset.
Parameters: - request (rest_framework.request.Request) – Django REST framework request.
- queryset (elasticsearch_dsl.search.Search) – Base queryset.
- view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
Returns: Updated queryset.
Return type: elasticsearch_dsl.search.Search
-
classmethod
get_default_ordering_params
(view)[source]¶ Get the default ordering params for the view.
Parameters: view (rest_framework.viewsets.ReadOnlyModelViewSet) – View. Returns: Ordering params to be used for ordering. Return type: list
-
get_ordering_query_params
(request, view)[source]¶ Get ordering query params.
Parameters: - request (rest_framework.request.Request) – Django REST framework request.
- view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
Returns: Ordering params to be used for ordering.
Return type: list
-
ordering_param
= 'ordering'¶
-
-
class
django_elasticsearch_dsl_drf.filter_backends.ordering.common.
OrderingFilterBackend
[source]¶ Bases:
rest_framework.filters.BaseFilterBackend
,django_elasticsearch_dsl_drf.filter_backends.ordering.common.OrderingMixin
Ordering filter backend for Elasticsearch.
Example:
>>> from django_elasticsearch_dsl_drf.filter_backends import ( >>> OrderingFilterBackend >>> ) >>> from django_elasticsearch_dsl_drf.viewsets import ( >>> BaseDocumentViewSet, >>> ) >>> >>> # Local article document definition >>> from .documents import ArticleDocument >>> >>> # Local article document serializer >>> from .serializers import ArticleDocumentSerializer >>> >>> class ArticleDocumentView(BaseDocumentViewSet): >>> >>> document = ArticleDocument >>> serializer_class = ArticleDocumentSerializer >>> filter_backends = [OrderingFilterBackend,] >>> ordering_fields = { >>> 'id': None, >>> 'title': 'title.raw', >>> 'date_submitted': 'date_submitted', >>> 'continent': { >>> 'field': 'continent.name.raw', >>> 'path': 'continent', >>> } >>> 'country': { >>> 'field': 'continent.country.name.raw', >>> 'path': 'continent.country', >>> } >>> 'city': { >>> 'field': 'continent.country.city.name.raw', >>> 'path': 'continent.country.city', >>> } >>> } >>> ordering = ('id', 'title',)
-
filter_queryset
(request, queryset, view)[source]¶ Filter the queryset.
Parameters: - request (rest_framework.request.Request) – Django REST framework request.
- queryset (elasticsearch_dsl.search.Search) – Base queryset.
- view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
Returns: Updated queryset.
Return type: elasticsearch_dsl.search.Search
-
get_ordering_query_params
(request, view)[source]¶ Get ordering query params.
Parameters: - request (rest_framework.request.Request) – Django REST framework request.
- view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
Returns: Ordering params to be used for ordering.
Return type: list
-
ordering_param
= 'ordering'¶
-
django_elasticsearch_dsl_drf.filter_backends.ordering.geo_spatial module¶
Geo-spatial ordering backend.
-
class
django_elasticsearch_dsl_drf.filter_backends.ordering.geo_spatial.
GeoSpatialOrderingFilterBackend
[source]¶ Bases:
rest_framework.filters.BaseFilterBackend
,django_elasticsearch_dsl_drf.filter_backends.mixins.FilterBackendMixin
Geo-spatial ordering filter backend for Elasticsearch.
Example:
>>> from django_elasticsearch_dsl_drf.filter_backends import ( >>> GeoSpatialOrderingFilterBackend >>> ) >>> from django_elasticsearch_dsl_drf.viewsets import ( >>> BaseDocumentViewSet, >>> ) >>> >>> # Local article document definition >>> from .documents import ArticleDocument >>> >>> # Local article document serializer >>> from .serializers import ArticleDocumentSerializer >>> >>> class ArticleDocumentView(BaseDocumentViewSet): >>> >>> document = ArticleDocument >>> serializer_class = ArticleDocumentSerializer >>> filter_backends = [GeoSpatialOrderingFilterBackend,] >>> geo_spatial_ordering_fields = { >>> 'location': { >>> 'field': 'location', >>> } >>> }
-
filter_queryset
(request, queryset, view)[source]¶ Filter the queryset.
Parameters: - request (rest_framework.request.Request) – Django REST framework request.
- queryset (elasticsearch_dsl.search.Search) – Base queryset.
- view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
Returns: Updated queryset.
Return type: elasticsearch_dsl.search.Search
-
classmethod
get_geo_distance_params
(value, field)[source]¶ Get params for geo_distance ordering.
Example:
/api/articles/?ordering=-location__45.3214__-34.3421__km__planesParameters: - value (str) –
- field –
Returns: Params to be used in geo_distance query.
Return type: dict
-
get_geo_spatial_field_name
(request, view, name)[source]¶ Get geo-spatial field name.
We have to deal with a couple of situations here:
Example 1:
>>> geo_spatial_ordering_fields = { >>> 'location': None, >>> }
Example 2:
>>> geo_spatial_ordering_fields = { >>> 'location': 'location', >>> }
Example 3:
>>> geo_spatial_ordering_fields = { >>> 'location': { >>> 'field': 'location' >>> }, >>> }
Parameters: - request –
- view –
- name –
Returns:
-
get_ordering_query_params
(request, view)[source]¶ Get ordering query params.
Parameters: - request (rest_framework.request.Request) – Django REST framework request.
- view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
Returns: Ordering params to be used for ordering.
Return type: list
-
ordering_param
= 'ordering'¶
-
Module contents¶
Ordering backends.
-
class
django_elasticsearch_dsl_drf.filter_backends.ordering.
DefaultOrderingFilterBackend
[source]¶ Bases:
rest_framework.filters.BaseFilterBackend
,django_elasticsearch_dsl_drf.filter_backends.ordering.common.OrderingMixin
Default ordering filter backend for Elasticsearch.
Make sure this is your last ordering backend.
Example:
>>> from django_elasticsearch_dsl_drf.filter_backends import ( >>> DefaultOrderingFilterBackend, >>> OrderingFilterBackend >>> ) >>> from django_elasticsearch_dsl_drf.viewsets import ( >>> BaseDocumentViewSet, >>> ) >>> >>> # Local article document definition >>> from .documents import ArticleDocument >>> >>> # Local article document serializer >>> from .serializers import ArticleDocumentSerializer >>> >>> class ArticleDocumentView(BaseDocumentViewSet): >>> >>> document = ArticleDocument >>> serializer_class = ArticleDocumentSerializer >>> filter_backends = [ >>> DefaultOrderingFilterBackend, >>> OrderingFilterBackend, >>> ] >>> ordering_fields = { >>> 'id': None, >>> 'title': 'title.raw', >>> 'date_submitted': 'date_submitted', >>> 'continent': { >>> 'field': 'continent.name.raw', >>> 'path': 'continent', >>> } >>> 'country': { >>> 'field': 'continent.country.name.raw', >>> 'path': 'continent.country', >>> } >>> 'city': { >>> 'field': 'continent.country.city.name.raw', >>> 'path': 'continent.country.city', >>> } >>> } >>> ordering = 'city'
-
filter_queryset
(request, queryset, view)[source]¶ Filter the queryset.
Parameters: - request (rest_framework.request.Request) – Django REST framework request.
- queryset (elasticsearch_dsl.search.Search) – Base queryset.
- view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
Returns: Updated queryset.
Return type: elasticsearch_dsl.search.Search
-
classmethod
get_default_ordering_params
(view)[source]¶ Get the default ordering params for the view.
Parameters: view (rest_framework.viewsets.ReadOnlyModelViewSet) – View. Returns: Ordering params to be used for ordering. Return type: list
-
get_ordering_query_params
(request, view)[source]¶ Get ordering query params.
Parameters: - request (rest_framework.request.Request) – Django REST framework request.
- view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
Returns: Ordering params to be used for ordering.
Return type: list
-
ordering_param
= 'ordering'¶
-
-
class
django_elasticsearch_dsl_drf.filter_backends.ordering.
GeoSpatialOrderingFilterBackend
[source]¶ Bases:
rest_framework.filters.BaseFilterBackend
,django_elasticsearch_dsl_drf.filter_backends.mixins.FilterBackendMixin
Geo-spatial ordering filter backend for Elasticsearch.
Example:
>>> from django_elasticsearch_dsl_drf.filter_backends import ( >>> GeoSpatialOrderingFilterBackend >>> ) >>> from django_elasticsearch_dsl_drf.viewsets import ( >>> BaseDocumentViewSet, >>> ) >>> >>> # Local article document definition >>> from .documents import ArticleDocument >>> >>> # Local article document serializer >>> from .serializers import ArticleDocumentSerializer >>> >>> class ArticleDocumentView(BaseDocumentViewSet): >>> >>> document = ArticleDocument >>> serializer_class = ArticleDocumentSerializer >>> filter_backends = [GeoSpatialOrderingFilterBackend,] >>> geo_spatial_ordering_fields = { >>> 'location': { >>> 'field': 'location', >>> } >>> }
-
filter_queryset
(request, queryset, view)[source]¶ Filter the queryset.
Parameters: - request (rest_framework.request.Request) – Django REST framework request.
- queryset (elasticsearch_dsl.search.Search) – Base queryset.
- view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
Returns: Updated queryset.
Return type: elasticsearch_dsl.search.Search
-
classmethod
get_geo_distance_params
(value, field)[source]¶ Get params for geo_distance ordering.
Example:
/api/articles/?ordering=-location__45.3214__-34.3421__km__planesParameters: - value (str) –
- field –
Returns: Params to be used in geo_distance query.
Return type: dict
-
get_geo_spatial_field_name
(request, view, name)[source]¶ Get geo-spatial field name.
We have to deal with a couple of situations here:
Example 1:
>>> geo_spatial_ordering_fields = { >>> 'location': None, >>> }
Example 2:
>>> geo_spatial_ordering_fields = { >>> 'location': 'location', >>> }
Example 3:
>>> geo_spatial_ordering_fields = { >>> 'location': { >>> 'field': 'location' >>> }, >>> }
Parameters: - request –
- view –
- name –
Returns:
-
get_ordering_query_params
(request, view)[source]¶ Get ordering query params.
Parameters: - request (rest_framework.request.Request) – Django REST framework request.
- view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
Returns: Ordering params to be used for ordering.
Return type: list
-
ordering_param
= 'ordering'¶
-
-
class
django_elasticsearch_dsl_drf.filter_backends.ordering.
OrderingFilterBackend
[source]¶ Bases:
rest_framework.filters.BaseFilterBackend
,django_elasticsearch_dsl_drf.filter_backends.ordering.common.OrderingMixin
Ordering filter backend for Elasticsearch.
Example:
>>> from django_elasticsearch_dsl_drf.filter_backends import ( >>> OrderingFilterBackend >>> ) >>> from django_elasticsearch_dsl_drf.viewsets import ( >>> BaseDocumentViewSet, >>> ) >>> >>> # Local article document definition >>> from .documents import ArticleDocument >>> >>> # Local article document serializer >>> from .serializers import ArticleDocumentSerializer >>> >>> class ArticleDocumentView(BaseDocumentViewSet): >>> >>> document = ArticleDocument >>> serializer_class = ArticleDocumentSerializer >>> filter_backends = [OrderingFilterBackend,] >>> ordering_fields = { >>> 'id': None, >>> 'title': 'title.raw', >>> 'date_submitted': 'date_submitted', >>> 'continent': { >>> 'field': 'continent.name.raw', >>> 'path': 'continent', >>> } >>> 'country': { >>> 'field': 'continent.country.name.raw', >>> 'path': 'continent.country', >>> } >>> 'city': { >>> 'field': 'continent.country.city.name.raw', >>> 'path': 'continent.country.city', >>> } >>> } >>> ordering = ('id', 'title',)
-
filter_queryset
(request, queryset, view)[source]¶ Filter the queryset.
Parameters: - request (rest_framework.request.Request) – Django REST framework request.
- queryset (elasticsearch_dsl.search.Search) – Base queryset.
- view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
Returns: Updated queryset.
Return type: elasticsearch_dsl.search.Search
-
get_ordering_query_params
(request, view)[source]¶ Get ordering query params.
Parameters: - request (rest_framework.request.Request) – Django REST framework request.
- view (rest_framework.viewsets.ReadOnlyModelViewSet) – View.
Returns: Ordering params to be used for ordering.
Return type: list
-
ordering_param
= 'ordering'¶
-