Bonjour,
nouveau, je découvre Django en réalisant un site de e-commerce.
Je me trouve coincé avec l'utilisation de boucle imbriquée et les templates.
Le but : Je crée des menus et les affichés dans deux pages différentes.
Sur la première sans Pb j'affiche menu par menu en ayant :
model
views
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class Menu(models.Model) : """Enregistrement de tous les menus proposé""" nom = models.CharField(max_length=255, unique=True) slug = models.SlugField(max_length=255, unique=True, help_text='valeur unique pour chaque page créé, fabriqué à partir du nom') prix = models.DecimalField(max_digits=9, decimal_places=2, default=0.00) remarques = models.TextField(blank=True) image = models.ImageField(upload_to="/images/menu", blank=True) meta_keywords = models.CharField(max_length=255, help_text='utilisé une virgule entre chaque mot.') meta_description = models.CharField(max_length=255, help_text='contenu pour le meta tag description.') creer_le = models.DateTimeField(auto_now_add=True) modifier_le = models.DateTimeField(auto_now=True) actif = models.BooleanField(default=True) compositions = models.ManyToManyField(Categorie)
par contre sur la deuxième je veux tous les menus avec les mêmes infos et là j'ai une erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 def show_menu(request, menu_slug, template_name="formules/menu.html") : """Fournis les éléments pour les pages de menu du module""" m = get_object_or_404(Menu, slug=menu_slug) categories = m.compositions.filter(actif=True) page_title = m.nom meta_keywords = m.meta_keywords meta_description = m.meta_description return render_to_response(template_name, locals(), context_instance=RequestContext(request)) template {% extends "commande.html" %} {% block content %} <div class="menuImg"> <img src="{{ MEDIA_URL }}images/menu/{{ m.image }}" alt="{{ m.nom }}" /> </div> <h1>{{ m.nom }}</h1> <br/> Composition : {% for c in categories %} <a href="{{ c.get_absolute_url }}">{{ c.nom }}</a> {% if not forloop.last %} + {% endif %} {% endfor %} <br/> Prix : {{ m.prix }} <br/> Remarques : {{ m.remarques }} {% endblock %}
views
template
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 def menus(request, template_name="formules/menus.html") : """Fournis les éléments pour la page menus du module""" menus = Menu.objects.filter(actif=True) page_title = 'Faites votre choix' return render_to_response(template_name, locals(), context_instance=RequestContext(request))
erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 {% extends "commande.html" %} {% block content %} {% for m in menus %} <div class="menu"> <h1>{{ m.nom }}</h1> {% for cat in m.compositions %} {{ cat.nom }} {% if not forloop.last %} + {% endif %} {% endfor %} <br/> Prix : {{ m.prix }} <br/> [Bouton Ajouté au panier] <br/><br/> </div> {% endfor %} {% endblock %}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 TemplateSyntaxError Exception Value : Caught TypeError while rendering: 'ManyRelatedManager' object is not iterable
Partager