sql >> Base de Datos >  >> RDS >> Mysql

Consulta cuando el parámetro es ninguno django

No sé, si me llego tu pregunta, pero

Model.objects.filter(x=x, y__isnull = False, z=z)

te da el conjunto de consultas, donde y la columna no es nula (IS NOT NULL ).

Aquí está la documentación pertinente.

EDITAR:Verifique si y es Ninguno y cree su conjunto de consultas dinámicamente:

if y is None:
    qs = Model.objects.filter(x=x).filter(z=z)
elif z is None:
    qs = Model.objects.filter(x=x).filter(y=y)
...

Si hay demasiados argumentos con los que lidiar, podría usar algo como esto; asumiendo que x , y , z se almacenan en un diccionario your values :

your_values = { 'x' : 'x value', 'y' : 'y value', 'z' : 'value'}
arguments = {}
for k, v in your_values.items():
    if v:
        arguments[k] = v

Model.objects.filter(**arguments)