2016-06-06 2 views
0

Je suis à New Django et j'ai un modèle "album" qui a 3 titres filed, genre et note et je leur montre la table et je veux afficher le chiffre "0" autant de fois que d'album.rating et j'utilise pour la boucle de 0 à album.rating mais il est affiché seulement une fois ie si l'album.rating est 2 alors "0" devrait afficher seulement 2 fois mais dans mon cas il affiche seulement 1 fois. S'il Vous Plaît m'aider. Merci d'avance.Voulez-vous afficher les étoiles de notation en django

Voici le code du html -

{% if albums %} 
    {% for album in albums %} 
    <tbody> 
    <tr> 
    <td>{{ album.album_title }}</td> 
    <td>{{ album.genre }}</td> 

     <!-- rating stars --> 
     <td> 
     {% for i in album.rating %} 
     <option value={{i}}>0</option> 
    {% endfor %} 
     </td> 


     <td> 
     <a href="{% url 'music:edit' album.id %}" class="btn btn-primary btn-sm" role="button">Edit</a> 
     </td> 
    <td> 

     </td> 
     </tr> 
     </tbody> 

Voici le code de view.py

def index(request): 
    if not request.user.is_authenticated(): 
    return render(request, 'music/login.html') 
else: 
    albums = Album.objects.filter(user=request.user) 
    paginator = Paginator(albums, 2) # Show 25 contacts per 
    page = request.GET.get('page') 
    try: 
      albums = paginator.page(page) 
    except PageNotAnInteger: 
      # If page is not an integer, deliver first page. 
      albums = paginator.page(1) 
    except EmptyPage: 
      # If page is out of range (e.g. 9999), deliver last page of results. 
      albums = paginator.page(paginator.num_pages) 
    song_results = Song.objects.all() 
    query = request.GET.get("q") 
    if query: 
     albums = albums.filter(
      Q(album_title__icontains=query) | 
      Q(artist__icontains=query) 
     ).distinct() 
     song_results = song_results.filter(
      Q(song_title__icontains=query) 
     ).distinct() 
     return render(request, 'music/index.html', { 
      'albums': albums, 
      'songs': song_results, 
     }) 
    else: 
     return render(request, 'music/index.html', {'albums': albums}) 
+0

Votre contenu html est-il correct? Vous avez l'élément 'sans' select' et vous pouvez également fournir le bloc complet de '{% if albums%}' à {{endif%} ' ? –

+0

s'il vous plaît ne jamais poster ça ne fonctionne pas dans une question. Au lieu de toujours poster ce que vous attendiez et ce que vous avez – e4c5

+0

@ e4c5 s'il vous plaît se référer à mon poste édité et je veux afficher le chiffre "0" autant de fois que album.rating et j'utilise pour la boucle de 0 à album.rating mais est affiché une seule fois si l'album.rating est 2 alors "0" devrait afficher seulement 2 fois mais dans mon cas il affiche seulement 1 fois – user3923278

Répondre

0

Puisque vous ne pouviez pas obtenir le moyen de mettre en œuvre, après avoir expliqué:

{% for i in album.rating %} est comme {% for i in 2 %} dans votre cas, ce qui s'avère que, pour un seul chiffre, il va en boucle une fois. utiliser le filtre de plage ou ainsi de suite.

je peux suggérer le meilleur moyen de l'obtenir mis en oeuvre via la réponse: Check this

{% if albums %} 
    {% for album in albums %} 
    <tbody> 
     <tr> 
      <td>{{ album.album_title }}</td> 
      <td>{{ album.genre }}</td> 
      <!-- rating stars --> 
      <td> 
      {% with ''|center:album.rating as range %} 
       {% for i in range %} 
        <option value={{i}}>0</option> 
       {% endfor %} 
      {% endfor %} 
      </td> 
      <td><a href="{% url 'music:edit' album.id %}" class="btn btn-primary btn-sm" role="button">Edit</a></td> 
      <td></td> 
     </tr> 
    </tbody> 
{% endif %} 

humble avis, s'il vous plaît regarder dans les filtres de modèle django et essayer de vérifier this. P.: n'a pas évalué la solution