IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

problème de template avec relation m2m


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Octobre 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2
    Par défaut problème de template avec relation m2m
    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
    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)
    views
    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 %}
    par contre sur la deuxième je veux tous les menus avec les mêmes infos et là j'ai une erreur
    views
    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))
    template
    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 %}
    erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TemplateSyntaxError
    Exception Value :     Caught TypeError while rendering: 'ManyRelatedManager' object is not iterable

  2. #2
    Futur Membre du Club
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Octobre 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2
    Par défaut résolu
    il faut appelé une methode de l'object et non l'object lui même
    template
    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.all %}
                    {{ cat.nom }}
                    {% if not forloop.last %} + {% endif %}
                {% endfor %}
                <br/>
                Prix: {{ m.prix }} €
                <br/>
                [Bouton Ajouté au panier]
                <br/><br/>
            </div>
        {% endfor %}    
    {% endblock %}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de template avec une queue
    Par Davidbrcz dans le forum Langage
    Réponses: 18
    Dernier message: 22/08/2007, 15h04
  2. Problème de Template avec Mailto
    Par ZACKX dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 12/07/2007, 10h05
  3. Problème de tri avec une relation de type n-n
    Par toutoune60 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 12/06/2007, 10h52
  4. Problème de map avec paramètre template
    Par bouba dans le forum Langage
    Réponses: 5
    Dernier message: 11/05/2007, 13h19
  5. [phpBB] Function avec le Template phpBB
    Par mangafan dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 27/09/2005, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo