2009-04-24 9 views
2

Jetzt habe ich diesen Code:ist es möglich, den Namen der Argumente der Funktion dynamisch zu definieren?

 attitude = request.REQUEST['attitude'] 
     if attitude == 'want': 
      qs = qs.filter(attitudes__want=True) 
     elif attitude == 'like': 
      qs = qs.filter(attitudes__like=True) 
     elif attitude == 'hate': 
      qs = qs.filter(attitudes__hate=True) 
     elif attitude == 'seen': 
      qs = qs.filter(attitudes__seen=True) 

Es wird besser sein Name "attitudes__xxxx" dynamisch zu definieren. Gibt es irgendwelche Möglichkeiten, das zu tun?

Danke!

+0

Duplizieren: http://stackoverflow.com/questions/353489/cleaner-way-to-query-on-a-dynamic-number-of-columns-in-django –

Antwort

7

Ja.

qs.filter(**{ 'attitudes__%s'%arg:True }) 
+0

Vielen Dank! Ihr Fall, wenig modifiziert, funktioniert richtig: qs.filter (** {'Einstellungen __% s'% str (Haltung): True}) – ramusus

+1

Die str (Haltung) ist redundant - die% s Formatierung macht das schon! So ist die Antwort von S.Lott perfekt und tatsächlich besser als Ihre "kleine modifizierte" Variante. –

Verwandte Themen