2009-09-08 8 views
4

J'essaye de créer une zone de liste déroulante avec la valeur choisie égale à une valeur passée des valeurs de modèle, mais sans succès. Quelqu'un peut-il jeter un coup d'oeil et me montrer ce que je fais mal.Modèle Django, comment créer une liste déroulante avec la valeur prédéfinie sélectionnée?

 <select name="movie"> 
     {% for movie in movies %} 
    {% ifequal movie.id selected_movie.id %} 
    <option value="{{movie.key}}" selected="true">Movie {{movie.id}}: {{movie.name}}</option> 
    {% endifequal %} 
    {% ifnotequal movie.id selected_movie.id %} 
    <option value="{{movie.key}}">Movie {{movie.id}}: {{movie.name}}</option> 
    {% endifnotequal %} 
     {% endfor %} 
    </select> 

Dans cet exemple, les films et selected_movie sont transmis à partir des valeurs du modèle. S'il vous plaît avis!

Répondre

10

Votre code fonctionne pour moi avec django 1.0.2 et firefox 3.5.

Vous pouvez utiliser {% else%} au lieu de {% ifnotequal%} et définir selected = "selected". J'espère que cela aide.

<select name="movie"> 
    {% for movie in movies %} 
     {% ifequal movie.id selected_movie.id %} 
      <option value="{{movie.key}}" selected="selected">Movie {{movie.id}}: {{movie.name}}</option> 
     {% else %} 
      <option value="{{movie.key}}">Movie {{movie.id}}: {{movie.name}}</option> 
     {% endifequal %} 
    {% endfor %} 
</select> 
+4

Vous devez insérer l'instruction ifequal, vous n'avez donc qu'une seule balise d'option. SEC. :) – knutin

+0

Exactement ce dont j'avais besoin pour passer un bloc. Confirmé fonctionne avec Django 2.0 et Firefox 57.0.4. – Sherd

Questions connexes