Mysql
 sql >> Database >  >> RDS >> Mysql

Interroga quando il parametro non è django

Non so, se ho ricevuto la tua domanda, ma

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

ti dà il set di query, dove y la colonna non è nulla (IS NOT NULL ).

Ecco la relativa documentazione.

EDIT:controlla se y è Nessuno e crea il tuo set di query in modo dinamico:

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)
...

Se ci sono troppi argomenti da affrontare, potresti usare qualcosa del genere; supponendo che x , y , z sono memorizzati in un dizionario 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)