From 6e3aaecdb2d10dd5bd18143ff90e835faec7ac59 Mon Sep 17 00:00:00 2001 From: Leandro Roberto Date: Thu, 21 Feb 2019 22:42:29 -0300 Subject: [PATCH] =?UTF-8?q?customiza=20ordena=C3=A7=C3=A3o=20din=C3=A2mica?= =?UTF-8?q?=20atrav=C3=A9s=20do=20filtro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/api/views.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sapl/api/views.py b/sapl/api/views.py index 4e88d76ca..df47c4f0d 100644 --- a/sapl/api/views.py +++ b/sapl/api/views.py @@ -9,6 +9,7 @@ from django.utils.decorators import classonlymethod from django.utils.text import capfirst from django.utils.translation import ugettext_lazy as _ import django_filters +from django_filters.filters import CharFilter from django_filters.rest_framework.backends import DjangoFilterBackend from django_filters.rest_framework.filterset import FilterSet from django_filters.utils import resolve_field @@ -74,6 +75,9 @@ class SaplApiViewSetConstrutor(ModelViewSet): # Define uma classe padrão para filtro caso não tenha sido # criada a classe sapl.api.forms.{model}FilterSet class SaplFilterSet(FilterSet): + + o = CharFilter(method='filter_o') + class Meta: model = _model fields = '__all__' @@ -86,6 +90,13 @@ class SaplApiViewSetConstrutor(ModelViewSet): }, } + def filter_o(self, queryset, name, value): + try: + return queryset.order_by( + *map(str.strip, value.split(','))) + except: + return queryset + @classmethod def filter_for_field(cls, f, name, lookup_expr='exact'): # Redefine método estático para ignorar filtro para