Je les modèles suivants:Comment afficher une liste d'objets contenant des relations many-to-many dans le template Django?
class Tag(models.Model):
name = models.CharField(max_length=20)
class Entry(models.Model):
title = models.CharField(max_length=100)
date = models.DateField()
tags = models.ManyToManyField(Tag)
Dans une vue que je crée une liste d'objets d'entrée et que vous souhaitez afficher les éléments du modèle:
{% for entry in entries %}
{{ entry.title }}
{{ entry.date }}
<!-- {% for tag in entry.tags %} {{ tag }} {% endfor %} -->
{% endfor %}
Et avec ce code modèle génère le suivant TemplateSyntaxError pointe vers la première ligne du modèle (pour la balise):
Pris TypeError tout en rendant: objet « ManyRelatedManager » est pas itérables
La variable entrées est une liste:
entries = Entry.objects.filter(user=user_id)
entries = list(entries)
entries.sort(key=lambda x: x.id, reverse=False)
Savez-vous ce qui peut être ici le problème et comment résoudre ce problème? Je ne connais pas encore Django, donc les suggestions pour déboguer les modèles peuvent être utiles.
Mise à jour
je reçois la même erreur, même avec ce modèle:
{% for entry in entries.all %}
<!-- everything is commented out here -->
{% endfor %}
Pourquoi êtes-vous convertir des 'entrées' en une liste et le trier en Python? C'est très inefficace. Vous devriez utiliser 'order_by' pour obtenir la base de données pour faire le tri. –
Bonne prise. Merci! – grigy