2016-06-06 3 views
0

Я нахожусь в новом в django, и у меня есть модельный альбом, в котором есть 3 названия, жанр и рейтинг, и я показываю им таблицу ia, и я хочу отобразить цифру «0», столько же времени, сколько и album.rating, и я использую для цикла от 0 до альбома. но он отображается только один раз, т.е. если album.rating равен 2, тогда «0» должен отображаться только 2 раза, но в моем случае он отображается только 1 раз. Пожалуйста, помогите мне. Спасибо заранее.Хотите показать звезды рейтинга в django

Вот код 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> 

Вот код 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

Является ли ваше содержание html правильным? У вас есть '' без элемента 'select', а также вы можете предоставить полный блок' {% if albums%} 'to' {% endif%} ' ? –

+0

, пожалуйста, никогда не публикуйте его, он не работает в вопросе. Вместо этого всегда отправляйте то, что вы ожидали, и то, что вы получили – e4c5

+0

@ e4c5, пожалуйста, обратитесь к моему отредактированному сообщению, и я хочу отображать цифру «0» столько раз, сколько album.rating, и я использую для цикла от 0 до альбома. отображается только один раз, т. е. если альбом.rating равен 2, тогда «0» должен отображаться только 2 раза, но в моем случае он отображает только 1 раз – user3923278

ответ

0

Поскольку вы не можете получить путь к реализации, после объяснения:

{% for i in album.rating %} выглядит как {% for i in 2 %} в вашем случае, и получается, что за одну цифру он будет зацикливаться один раз. фильтр диапазона использования или так далее.

я могу предложить самый быстрый способ получить это реализуется с помощью ответа: 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 мнение, пожалуйста, смотрите в фильтры шаблона Джанго и попытаться проверить this.

P.S: не оценили решение