Ich hatte eine riesige Registrierungstabelle mit 112 Feldern. Für eine bestimmte Suche möchte ich 17 Felder vergleichen & Farben zuweisen Variable sagen 'clrSelected'. Mein Code ist:Django 1.4 - Abfrage Iteration mit in einem Wörterbuch gespeicherten Feldern
reg = Regisration.objects.filter('some condition').order_by("name")
for r in reg:
if r.name=='abc': clrSelected='#fff'
if r.type=='1': clrSelected='#000'
if r.appl=='10': clrSelected='#c1ff51'
if r.code=='': clrSelected='#60c5f7'
if r.qlty=='first': clrSelected='#f99334'
...
...
wird es nur eine wenn Zustand sein, die gefärbt werden müssen. Dies bedeutet, dass sich das zu vergleichende Feld (aus dem Wörterbuch) basierend auf der Benutzerauswahl ändert. Ich möchte aus einem Wörterbuch den Feldnamen wie diese und es so etwas wie dieses
if r.flds['1']=='abc': clrSelected='#fff'
verwenden
flds = {'1':'name', '2':'type', '3':'appl', '4':'code', '5':'qlty',...}
zuzugreifen Wie ich oben die Felder nutzen könnten. Ich bin mit django 1.4 & Python 2.7
ist Ihre Frage: "Wie kann ich dynamisch auf Felder von Variablennamen zugreifen?"? Gibt es einen Grund, warum Sie ein Wörterbuch als Struktur verwenden, um die Feldnamen statt einer Liste zu speichern? – ChidG
yup..ich möchte dynamisch auf ein Feld aus dem Wörterbuch zugreifen. Das Feld für den Zugriff hängt von der Benutzerauswahl ab. – user123
Wie die Antwort sagt, verwenden Sie "getattr", um dynamisch auf das Feld zuzugreifen. Sie brauchen kein Wörterbuch. Eine Liste hier würde genauso gut funktionieren. – ChidG