Saltar al contenido

django-rest-framework filtrar por fecha=Ninguno

Hola, hemos encontrado la solución a lo que buscabas, continúa leyendo y la obtendrás un poco más abajo.

Solución:

especificando isnull directamente en el filtro name argumento como 'date__isnull' parece estar funcionando para mí con Django REST Framework 3.1.3.

class WidgetFilter(django_filters.FilterSet):
    date = django_filters.DateTimeFilter(name='date')
    no_date = django_filters.BooleanFilter(name='date__isnull')
    class Meta:
        model = Widget
        fields = []

Me encontré con una situación similar hoy, y parece como si fuera de la caja django rest framework* admite este filtro como:

~/your_endpoint/?date__isnull=True

Esto coincide con el aspecto que tendría la consulta ORM equivalente. Si eso es feo, puede usar el ejemplo de documentos para transformar ese parámetro de consulta en otra cosa sin tener que anularlo get_queryset

  • Estoy usando 2.4.3, pero no creo que esto sea algo nuevo.

En caso de que no haya una forma más elegante, así es como arreglé mi solución alternativa, pero aún me gustaría saber de una solución que use django-filtersi existe.

class WidgetSet(viewsets.ModelViewSet):
    model = Widget

    def get_queryset(self):
        if 'no_date' in self.request.QUERY_PARAMS:
            return self.model.objects.filter(date=None)
        return self.model.objects.all()

valoraciones y reseñas

Acuérdate de que te permitimos añadir una puntuación correcta .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *