2010-08-19 4 views
1

J'ai deux objets à 4 niveaux que je transmets au modèle django. Je suis actuellement pour boucler chaque niveau, et descendre un niveau s'il existe. J'ai fini par avoir key, key2 et key3 qui représente l'emplacement actuel dans l'objet en boucle. Je voudrais faire référence à l'autre objet qui a les mêmes niveaux en utilisant ces variables, mais j'ai quelques problèmes.Utilisation d'une variable en tant que clé d'objet dans les balises de modèle Django

Si je tentais de le faire en python, il ressemblerait à ceci

my_object[ key ][ key2 ][ key3 ]

Mais dans les modèles de django, il ne semble pas que je peux utiliser des crochets, et si je les périodes il serait pense que la clé est le nom de la clé et ne la considère pas comme une variable.

Si vous avez besoin de plus de détails sur mon code, faites le moi savoir. Merci! Edit: Voici un exemple de ce à quoi ressemble mon objet, et mon code de modèle.

variable1 = { 
    "content": { 
     "pages": { 
      "view":True, 
      "add":True, 
      "edit":True, 
      "delete":True 
     }, 
     "articles": { 
      "view":True, 
      "add":True, 
      "edit":True, 
      "delete":True 
     }, 
     "slideshow": { 
      "view":True, 
      "edit":True 
     }, 
    }, 
    "people": { 
     "view":True, 
     "add":True, 
     "edit":True, 
     "delete":True, 
     "sort-staff":True, 
     "sort-riders":True 
    } 
} 

variable2 est identique à celui d'une variable, avec les mêmes touches, mais certaines touches sont manquantes.

Voici à quoi ressemble mon modèle pour trier cet objet.

{% for key, value in variable1.items %} 
    <strong>{{ key|title }}</strong> 
    {% for key2, value2 in value.items %} 
     {% if value2.items %} 
      <p class="indent">{{ key2|title }} 
      {% for key3, value3 in value2.items %} 
       <p class="indent"><input type="checkbox" name="form_permission_{{ key }}_{{ key2 }}_{{ key3 }}" {% if variable2[key][key2][key3] %}checked="checked"{% endif %}> {{ key3|title }}</p> 
      {% endfor %} 
      </p> 
     {% else %} 
      <p class="indent"><input type="checkbox" name="form_permission_{{ key }}_{{ key2 }}"> {{ key2|title }}</p> 
     {% endif %} 
    {% endfor %} 
{% endfor %} 

Si vous regardez la ligne la plus échancrée, vous verrez {% if variable2[key][key2][key3] %}checked="checked"{% endif %}. Vous devriez être capable de comprendre ce que j'essaie d'accomplir avec ce code.

+0

pouvez-vous publier à quoi ressemble votre objet et votre code de modèle? –

+0

Ajouté du code, merci! –

Répondre

0

J'ai fini par faire le tri et la comparaison avant que les données ne soient envoyées au modèle de sorte que cette question n'est plus nécessaire. N'hésitez pas à poster d'autres options.

0

Cela ne peut pas être fait de cette façon. Regardez dans l'écriture d'un tag de modèle ou un filtre pour cela.

+0

J'étais assez sûr que cela ne pouvait pas être fait, mais il semble que beaucoup de gens pourraient avoir besoin d'eux. Mon espoir était de trouver quelque chose que quelqu'un a déjà écrit (étiquette personnalisée ou filtre) que je peux brancher. –

Questions connexes