【问题标题】:Want to display rating stars in django想要在 Django 中显示星级
【发布时间】:2016-06-06 05:26:04
【问题描述】:

我是 django 的新手,我有一个模型“专辑”,它有 3 个文件标题、流派和评级,我在一张表中显示它们,我想显示数字“0”的次数与专辑评分一样多我正在使用从0到album.rating的for循环,但它只显示一次,即如果album.rating为2,那么“0”应该只显示2次,但在我的情况下它只显示1次。请帮助我。提前致谢。

这是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})

【问题讨论】:

  • 你的html内容正确吗?你有&lt;option value={{i}}&gt; {{i}}&lt;/option&gt; 没有select 元素,你也可以提供{% if albums %}{% endif %} 的完整块吗?
  • 请不要在问题中发布它不起作用。相反,总是发布你所期望的和你得到的
  • @e4c5 请参考我编辑的帖子,我想显示数字“0”的次数与album.rating 一样多,我正在使用从0 到album.rating 的for 循环,但它只显示一次,即如果album.rating 为2,那么“0”应该只显示2 次,但在我的情况下它只显示1 次
  • @NagarajTantri 请参考我编辑的帖子,我想显示数字“0”的次数与album.rating 一样多,我正在使用从0 到album.rating 的for 循环,但它只显示一次,即如果album.rating 为2,那么“0”应该只显示2 次,但在我的情况下它只显示1 次
  • 问题很可能出在您的数据中。您检查了 album.rating 实际包含的内容吗?

标签: python django rating


【解决方案1】:

由于无法得到实现的方法,解释后:

{% 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 %}

拙见,请查看DJango模板过滤器并尝试检查 this.

P.S: 没有评估解决方案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 2021-11-24
    • 2023-03-31
    • 2019-06-18
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多