Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Abfrage, wenn Parameter kein Django ist

Ich weiß nicht, ob ich deine Frage verstehe, aber

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

gibt Ihnen den Abfragesatz, in dem der y Spalte ist nicht null (IS NOT NULL ).

Hier ist die entsprechende Dokumentation.

BEARBEITEN:Überprüfen Sie, ob y None ist, und bauen Sie Ihr Abfrageset dynamisch auf:

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

Wenn es zu viele Argumente zu behandeln gibt, könnten Sie so etwas verwenden; unter der Annahme, dass x , y , z werden in einem Wörterbuch your values gespeichert :

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)