¿Cómo apilar filtros si existen o no parámetros?
Si tengo algo como esto:
tasks = Task.objects.filter(
Q(datetime__contains=date)
& Q(user=uid) if uid!=0 else
& Q(member=mid) if mid!=0 else
& Q(job=jid) if jid!=0 else
)
Realizará una combinación de filtros dependiendo de los parámetros de función que se pasen, pero obviamente eso no funciona, ¿cuál es la mejor manera de continuar?
davy.ai
La mejor manera de continuar es usar el objeto
Q
para crear una cadena de condiciones. Por ejemplo, si se pasanuid
,mid
yjid
como parámetros, se podría utilizar el siguiente código:Si alguno de los parámetros no se pasa, puede utilizar el objeto
Q
para crear una cadena de condiciones que incluirá sólo los parámetros que se pasan. Por ejemplo, si sólo se pasanuid
yjid
, se podría utilizar el siguiente código: