J'avais une énorme table d'enregistrement avec 112 champs. Pour une recherche particulière, je veux comparer 17 champs & affecter des couleurs à la variable dire 'clrSelected'. Mon code est:Django 1.4 - interroger l'itération en utilisant des champs stockés dans un dictionnaire
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'
...
...
il n'y aura qu'un seul si condition, qui doivent être de couleur. Ce qui signifie que le champ (du dictionnaire) à comparer changera en fonction de la sélection de l'utilisateur. Je veux accéder au nom du champ dans un dictionnaire comme celui-ci
flds = {'1':'name', '2':'type', '3':'appl', '4':'code', '5':'qlty',...}
Et utiliser quelque chose comme ça
if r.flds['1']=='abc': clrSelected='#fff'
Comment pourrais-je utiliser les champs ci-dessus. J'utilise django 1.4 & python 2.7
est votre question: «comment accéder dynamiquement aux champs à partir de noms de variables? Y at-il une raison pour laquelle vous utilisez un dictionnaire comme structure pour stocker les noms de champs plutôt qu'une liste? – ChidG
yup..je veux accéder dynamiquement à un champ du dictionnaire. le champ d'accès dépend de la sélection de l'utilisateur. – user123
Comme la réponse l'indique, utilisez 'getattr' pour accéder dynamiquement au champ. Vous n'avez pas besoin d'un dictionnaire. Une liste ici fonctionnerait aussi bien. – ChidG