Django-filter: Contiene / filtro icontains no funciona

Creado en 16 ene. 2017  ·  4Comentarios  ·  Fuente: carltongibson/django-filter

class OrderFilter(django_filters.FilterSet):
    class Meta:
        model = Order
        fields = {
            'status': ['exact',],
            'client': ['icontains',],
        }
class OrderViewset(viewsets.ModelViewSet):
    filter_class = OrderFilter
    permission_classes = ( permissions.IsAuthenticated, )
    serializer_class = OrderSerializer
    queryset = Order.objects.all()
    filter_backends = (
        filters.OrderingFilter,
        filters.SearchFilter,
        filters.DjangoFilterBackend
    )
    ordering_fields = ('added_at', 'status', 'client', 'order_number')
    ordering = ('-added_at',)
class Order(models.Model):
    order_number = models.CharField(max_length=255, default='')
    client = models.CharField(max_length=255, default='')
    status = models.CharField(max_length=255, default='')
    added_at = models.DateTimeField(auto_now_add=True)

Básicamente, se ignora el filtro de cliente. Si reemplazo icontains con exact, funciona.
Pero no puedo hacer que los contenidos o icontains funcionen en ningún campo.

Requirements.txt:

Django == 1.10.4
psycopg2 == 2.6.2
djangorestframework == 3.5.3
canales == 1.0.0
djangorestframework-jwt == 1.9.0
filtro django == 1.0.1
asgi-redis == 1.0.0
daphne == 1.0.0

Comentario más útil

Hola @xtrinch , ¿podrías publicar una URL de muestra con parámetros de consulta? Supongo que estás consultando /api/orders?status=foo lugar de /api/orders?status__icontains=foo . Hay una nota en los documentos de Meta.fields que explica el comportamiento ligeramente diferente de las búsquedas de exact .

Todos 4 comentarios

Hola @xtrinch.

En la descripción, no veo ningún problema. ¿Puedo aconsejarle que trate de poner un punto de interrupción en el FilterSet 's qs propiedad y paso a través de ver lo que está pasando.

Si pudiera reducirlo a un caso de prueba simple, eso también ayudaría.

Filter solo toma el valor y crea una búsqueda para el ORM, por lo que la pregunta es, _¿Dónde va mal? _

Hola @xtrinch , ¿podrías publicar una URL de muestra con parámetros de consulta? Supongo que estás consultando /api/orders?status=foo lugar de /api/orders?status__icontains=foo . Hay una nota en los documentos de Meta.fields que explica el comportamiento ligeramente diferente de las búsquedas de exact .

@rpkilby Gracias. Tenía la impresión de que el primer elemento de la matriz se convierte en el filtro predeterminado; veo que estaba equivocado :)

tu publicación me es muy útil en mi proyecto
Gracias

¿Fue útil esta página
0 / 5 - 0 calificaciones