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__planes
- Parameters
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__planes
- Parameters
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'¶