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-filter
si 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 .