¿Cómo hacer un filtro menor o igual que en Django queryset?

2 minutos de lectura

avatar de usuario
finlandés

Estoy intentando filtrar usuarios por un campo personalizado en cada perfil de usuario llamado perfil. Este campo se llama nivel y es un número entero entre 0-3.

Si filtro usando iguales, obtengo una lista de usuarios con el nivel elegido como se esperaba:

user_list = User.objects.filter(userprofile__level = 0)

Cuando trato de filtrar usando menos de:

user_list = User.objects.filter(userprofile__level < 3)

me sale el error:

el nombre global ‘userprofile__level’ no está definido

¿Hay alguna manera de filtrar por , o estoy ladrando al árbol equivocado?

  • @BéresBotond Aunque los documentos se ven geniales, la estructuración y el diseño son tan deficientes que sin un enlace directo, son casi inútiles

    – Ejecutar bucle

    6 de julio de 2015 a las 4:41

  • @BéresBotond Desafortunadamente, ese enlace ahora está muerto 🙁

    – dKen

    30 de agosto de 2016 a las 18:59

  • Enlace de trabajo para doc: docs.djangoproject.com/en/1.11/ref/models/querysets/#gt

    – Gaurav Pandey

    24 de enero de 2018 a las 7:43


avatar de usuario
lprsd

Menor o igual:

User.objects.filter(userprofile__level__lte=0)

Mayor que o igual:

User.objects.filter(userprofile__level__gte=0)

Igualmente, lt por menos de y gt por mayor que. Puedes encontrarlos todos en la documentación.

  • Wow, eso fue rápido :). Esto funciona muy bien para menos o igual, pero ¿qué tal menos que? (userprofile__level__lt=3) no parece funcionar

    – finlandés

    6 de abril de 2012 a las 6:57

  • Lo hace; pero en cualquier caso, también puede excluir (__gte) en lugar de filtrar (__lt).

    – lprsd

    6 de abril de 2012 a las 7:01

  • Y NO olvides que hay dos __ subraya

    – Andilabs

    30 de enero de 2014 a las 6:48

  • Recibo este error–> {FieldError} Búsqueda no admitida ‘nivel’ para AutoField o unirse en el campo no permitido.

    – Aravind R. Pillai

    20 de septiembre de 2018 a las 3:18

  • pregunta, ¿qué significa =0 aquí? ¿falso? ¿verdadero?

    – Deya Eldeen

    23 de septiembre de 2020 a las 7:44

¿Ha sido útil esta solución?