Tri et indexation dans une liste dans un Django template?
Comment pouvez-vous effectuer complexe de tri sur un objet avant de le transmettre au modèle? Par exemple, voici mon avis:
@login_required
def overview(request):
physicians = PhysicianGroup.objects.get(pk=physician_group).physicians
for physician in physicians.all():
physician.service_patients.order_by('bed__room__unit', 'bed__room__order', 'bed__order')
return render_to_response('hospitalists/overview.html', RequestContext(request, {'physicians': physicians,}))
Les médecins de l'objet n'est pas réglé correctement dans le modèle. Pourquoi pas?
En outre, comment avez-vous indice dans une liste à l'intérieur du modèle? Par exemple, (cela ne fonctionne pas):
{% for note_type in note_types %}
<div><h3>{{ note_type }}</h3>
{% for notes in note_sets.index(parent.forloop.counter0) %}
#only want to display the notes of this note_type!
{% for note in notes %}
<p>{{ note }}</p>
{% endfor %}
{% endfor %}
</div>
{% endfor %}
Merci beaucoup, Pete
- Mortensen, pourquoi allez-vous autour de la suppression de la reconnaissance de postes gens? Voir votre révision n ° 8 de cette question. Je ne trouve pas cela acceptable.
Vous devez vous connecter pour publier un commentaire.
Comme d'autres l'ont indiqué, les deux problèmes sont mieux résolus à l'extérieur du modèle -- dans les modèles, ou dans la vue. Une stratégie serait d'ajouter des méthodes d'assistance pour les catégories pertinentes.
Obtenir une liste triée d'un médecin, les patients:
Et dans le modèle, l'utilisation
physician.sorted_patients
plutôt quephysician.patients
.Pour l' "afficher les notes de ce note_type", il semble que vous voudrez peut-être un
notes
méthode pour la note_type classe. À partir de votre description, je ne suis pas sûr si c'est un modèle de classe ou pas, mais le principe est le même:Et puis le modèle:
"J'aimerais le faire à partir de l'intérieur d'un modèle:"
Ne le font pas. Le faire dans la fonction de visualisation où il appartient.
Puisque la question est incomplète, il est impossible de deviner le modèle de données et de fournir la solution exacte.
Devrait être suffisant. Fournir
results
pour le modèle pour le rendu. C'est dans le bon ordre.Si ce n'est pas le tri correctement (peut-être à cause de certains modèle subtletly) ensuite, vous avez toujours ce genre d'alternative.
Fournir
patient_list
pour le modèle pour le rendu. C'est dans le bon ordre."comment avez-vous indice dans une liste à l'intérieur du modèle"
Je ne suis pas sûr de ce que vous essayez de faire, mais la plupart du temps, la réponse est "Ne pas". Le faire dans la fonction de visualisation.
Le modèle d'itérer à travers de simples listes de remplissage dans de simples modèles HTML.
Si cela vous semble trop complexe pour un modèle, il est. Conserver le modèle simple-c'est seulement la présentation. La transformation va dans le point de vue de la fonction
order_by
méthode. C'est le tri qui est fait.Vous devriez être en mesure de construire la commande de requête ensemble de votre point de vue et de le passer à votre modèle:
Votre modèle peut ensuite en boucle sur
patients
qui contiendra les résultats classés. N'est-ce pas le travail pour vous?EDIT: Pour l'indexation, il suffit d'utiliser la syntaxe à point:
mylist.3
dans un modèle devientmylist[3]
en python. Voir http://docs.djangoproject.com/en/dev/ref/templates/api/#rendering-a-context pour plus d'informations.C'est une manière de faire, bien que très laid :
{% for note in note_sets|slice:"forloop.counter0"|first %}