2012-04-26 4 views
3

J'ai une valeur et je souhaite que toutes les instances aient la valeur dans une ou plusieurs colonnes. Et pour rendre cela un peu plus complexe, la liste des champs est dynamique.Django: Requêtes OU avec des noms de champs dynamiques

Alors, ce que j'ai est: ['field1', 'field2', 'field3', ...]

Ce que j'ai besoin est: Q(field1='value') | Q(field2='value') | Q(field3='value') | ...

Comment puis-je obtenir?

Répondre

7

Utilisez ** dictionnaire à kw-args extension:

q = Q() 
for field in fields: 
    q = q | Q(**{field: "value"}) 

(comme Q() rendement d'un Q qui "ne fait rien", pour autant que je peux dire)

+0

Merci pour la mise à jour, parce que moins de deux peuvent certainement arriver. – Martin

+1

Pas de problème. En fait, j'ai supprimé l'original, car "réduire" est généralement une mauvaise idée, et la nouvelle version est fondamentalement meilleure à tous les égards. –

Questions connexes