Me gustaría recuperar un montón de filas de mi base de datos usando un conjunto de filtros.django filtrando condicionalmente objetos
Me preguntaba si el filtro condicional es aplicable en django. Es decir, "filtrar si la variable no es Ninguna o no aplicar filtro de lo contrario".
Algo como esto:
user = User.objects.get(pk=1)
category = Category.objects.get(pk=1)
todays_items = Item.objects.filter(user=user, date=now()).conditional_filter(category=category))
Lo que me gustaría hacer es aplicar el filtro categoría sólo si la categoría no es Ninguno.
Si la categoría es Ninguna (significa que no se proporciona en el objeto de solicitud), entonces este filtro no se aplicará en absoluto. Esto me ahorraría un montón de situaciones 'if-elif-else'.
¿Hay alguna manera de hacerlo?
Gracias, lo que no entiendo es 'category__isnull = True'. Ninguno de mis objetos tiene NULL en su campo de categoría. Lo cual hace que sea siempre falso. – xpanta
@xpanta, explicado en la respuesta. – danihp
@danihp, lo siento, todavía no entiendo muy bien el __isnull = Verdadero. Se aplica a esta situación: un formulario que contiene "categoría", el usuario llena y envía el formulario. Si el usuario no ingresa "categoría", entonces este es "" para este valor. Luego, filtra la base de datos SIN la restricción de "categoría" si sigo tu primer ejemplo? Por favor corrígeme si mi comprensión es correcta. Gracias por adelantado. –