Saltar al contenido

Consulta de filtro de Django activada con campos de propiedad calculados automáticamente

Solución:

No, no puede realizar búsquedas basadas en métodos o propiedades del modelo. Django ORM no permite eso.

Las consultas se compilan en SQL para ser enviadas y procesadas a nivel de base de datos, mientras que las propiedades son código Python y la base de datos no sabe nada sobre ellas. Esa es la razón por la que el filtro Django solo nos permite usar campos de base de datos.

Puede hacer esto:

Order.objects.filter(created=..) # valid as 'created' is a model field

No puedo hacer esto:

Order.objects.filter(expires=..) # INVALID as 'expires' is a model property

En su lugar, puede utilizar listas por comprensión para obtener el resultado deseado.

[obj for obj in Order.objects.all() if obj.expire in days]

Lo anterior me dará la lista de Order objetos que tienen expire valor en el days lista.

No creo que puedas usar una propiedad en las búsquedas de campo como dice el documento. The field specified in a lookup has to be the name of a model field https://docs.djangoproject.com/en/1.8/topics/db/queries/#field-lookups

¡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 *