Cela peut sembler simple, mais j’ai regardé autour de moi sans trouver de réponse. Quelle est la meilleure façon de référencer un seul élément dans une liste à partir d'un modèle Django?
En d'autres termes, comment puis-je faire l'équivalent de {{ data[0] }}
dans la langue du template?
Merci.
Ça ressemble à {{ data.0 }}
. Voir Variables et recherches .
Une meilleure façon: filtre de modèle personnalisé: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
comme get List [x] dans les templates:
dans le modèle
{% load index %}
{{ List|index:x }}
templatetags/index.py
from Django import template
register = template.Library()
@register.filter
def index(List, i):
return List[int(i)]
si List = [['a','b','c'], ['d','e','f']]
, vous pouvez utiliser {{ List|index:x|index:y }}
dans le modèle pour obtenir List[x][y]
Cela fonctionne bien avec "pour"
{{ List|index:forloop.counter0 }}
Testé et fonctionne bien ^ _ ^
{{ data.0 }}
Devrait fonctionner.
Supposons que vous écriviez data.obj
Django essaye data.obj
Et data.obj()
. _. Si cela ne fonctionne pas, essayez data["obj"]
. Dans votre cas, data[0]
Peut être écrit sous la forme {{ data.0 }}
. Mais je vous recommande d'extraire data[0]
Dans la vue et de l'envoyer en tant que variable distincte.
@ jennifer06262016, vous pouvez certainement ajouter un autre filtre pour renvoyer les objets à l'intérieur d'un Django Queryset.
@register.filter
def get_item(Queryset):
return Queryset.your_item_key
Dans ce cas, vous devez taper quelque chose comme ceci {{Queryset | index: x | get_item}} dans votre modèle pour accéder à un objet dictionnaire. Ça marche pour moi.