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

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.views 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': 'id',
>>>         'title': 'title.raw',
>>>         'date_submitted': 'date_submitted',
>>>         'state': {
>>>             'field': 'state.raw',
>>>         }
>>>     }
>>>     ordering = 'name'
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

Ordering filter backend for Elasticsearch.

Example:

>>> from django_elasticsearch_dsl_drf.filter_backends import (
>>>     OrderingFilterBackend
>>> )
>>> from django_elasticsearch_dsl_drf.views 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': 'id',
>>>         'title': 'title.raw',
>>>         'date_submitted': 'date_submitted',
>>>         'state': {
>>>             'field': 'state.raw',
>>>         }
>>>     }
>>>     ordering = ('id', 'name',)
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.views 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_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

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.views 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': 'id',
>>>         'title': 'title.raw',
>>>         'date_submitted': 'date_submitted',
>>>         'state': {
>>>             'field': 'state.raw',
>>>         }
>>>     }
>>>     ordering = 'name'
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.views 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_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

Ordering filter backend for Elasticsearch.

Example:

>>> from django_elasticsearch_dsl_drf.filter_backends import (
>>>     OrderingFilterBackend
>>> )
>>> from django_elasticsearch_dsl_drf.views 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': 'id',
>>>         'title': 'title.raw',
>>>         'date_submitted': 'date_submitted',
>>>         'state': {
>>>             'field': 'state.raw',
>>>         }
>>>     }
>>>     ordering = ('id', 'name',)
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'