2016-06-06 26 views
0

Ich bin neu in django und ich habe ein Modell "album" welches 3 Dateien Titel, Genre und Bewertung hat und ich zeige sie ia Tabelle an und ich möchte die Ziffer "0" anzeigen so oft wie album.rating und ich verwende for loop von 0 bis album.rating, aber es wird nur einmal angezeigt, dh wenn album.rating 2 ist, dann sollte "0" nur 2 mal angezeigt werden, aber in meinem Fall wird nur angezeigt 1 Mal. Bitte helfen Sie mir. Danke im Voraus. HierIch möchte Bewertungssterne in django anzeigen

ist der Code, der 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> 

Hier wird der Code von 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

Ist Ihr HTML-Inhalt korrekt? Sie haben '' ohne 'select' Element und könnten auch den vollständigen Block von' {% if albums%} 'für' {% endif%} 'bereitstellen ? –

+0

Bitte posten Sie nicht, es funktioniert nicht in einer Frage. Stattdessen poste immer was du erwartest und was du hast – e4c5

+0

@ e4c5 bitte beziehe mich auf meinen bearbeiteten Post und ich möchte die Zahl "0" so oft wie album.rating anzeigen und ich benutze for loop von 0 bis album.rating aber es wird nur einmal angezeigt, dh wenn das album.rating 2 ist, dann sollte "0" nur 2 mal angezeigt werden, aber in meinem Fall wird nur 1 mal angezeigt – user3923278

Antwort

0

Da Sie nicht den Weg bekommen können zu implementieren, nach dem Erklären:

{% for i in album.rating %} ist wie {% for i in 2 %} in Ihrem Fall, die sich herausstellt, dass für eine einzelne Ziffer, es wird einmal Schleife. Verwenden Sie Bereichsfilter oder so weiter.

Ich kann den schnellsten Weg schlägt sie über die Antwort umgesetzt zu bekommen: 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 Meinung, schauen Sie bitte in Djangos Template-Filter und versuchen und überprüfen this .

S.S .: haben die Lösung nicht ausgewertet