“>”, “=” y “

2 minutos de lectura

Avatar de usuario de Finglish
finlandés

Con = a continuación, podría filtrar personas por age:

qs = Person.objects.filter(age = 20)
                             # ↑ Here

Pero con >, <, >= y <= a continuación, no pude filtrar personas por age:

qs = Person.objects.filter(age > 20)
                             # ↑ Here
qs = Person.objects.filter(age < 20)
                             # ↑ Here
qs = Person.objects.filter(age >= 20)
                             # ↑↑ Here
qs = Person.objects.filter(age <= 20)
                             # ↑↑ Here

Entonces, recibí el siguiente error:

NameError: el nombre ‘edad’ no está definido

Como lo puedo hacer greater than(>), greater than or equal to(>=), less than(<) y less than or equal to(>=) con filtrar() en Django?

  • @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 de lprsd
lprsd

Mas grande que:

Person.objects.filter(age__gt=20)

Mayor qué o igual a:

Person.objects.filter(age__gte=20)

Menos que:

Person.objects.filter(age__lt=20)

Menos que o igual a:

Person.objects.filter(age__lte=20)

Puedes encontrarlos todos en [the documentation].(https://docs.djangoproject.com/en/stable/ref/models/querysets/).

  • 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 Pillai

    20 de septiembre de 2018 a las 3:18

  • recuerda cambiar userprofile__level por sus campos por ejemplo youtfield__lte. @AravindRPillai

    – cristianobueno.1

    3 de julio de 2022 a las 23:33


Poner __gt sufijo para “GRAMObebedor Than” a el nombre del campo age:

Person.objects.filter(age__gt=20)
                    #    ↑↑↑↑ 
                    # age > 20

Poner __gte sufijo para “GRAMObebedor Than o miigual a” a el nombre del campo age:

Person.objects.filter(age__gte=20)
                    #    ↑↑↑↑↑ 
                    # age >= 20

Poner __lt sufijo para “Leso Than” a el nombre del campo age:

Person.objects.filter(age__lt=20)
                    #    ↑↑↑↑ 
                    # age < 20

Poner __lte sufijo para “Leso Than o miigual a” a el nombre del campo age:

Person.objects.filter(age__lte=20)
                    #    ↑↑↑↑↑ 
                    # age <= 20

¿Ha sido útil esta solución?