Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête lorsque le paramètre n'est pas django

Je ne sais pas si je comprends votre question, mais

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

vous donne le jeu de requêtes, où le y la colonne est non nulle (IS NOT NULL ).

Voici la documentation pertinente.

EDIT :Vérifiez si y est None et créez votre jeu de requêtes dynamiquement :

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

S'il y a trop d'arguments à traiter, vous pouvez utiliser quelque chose comme ça; en supposant que x , y , z sont stockées dans un dictionnaire 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)