Django 模板标签 get/filter 个模型

Django template tags get/filter models

我正在尝试使用模板标签来完成一些事情。 我有一家有产品评级的商店。我想要一个模板标签,它可以获取评分值和用户(如果存在的话)。

@register.simple_tag
def puntaje_usuario(prod):
    rating = Rating.objects.get(usuario=request.user.id, producto=prod.id)
    return rating

我想在这里使用它:(模板评级星级)

<div class="prod-info">
<h5><a href="{{x.get_absolute_url_shop}}" class="txt-muted"> {{x.nombre}} </a></h5>
{% if puntaje_usuario x %}
    <!-- SAME SELECT THAT "else" WITH RATING VALUE OPTION SELECTED -->
{% else %}
<div class="stars stars-example-css m-b-10">
    <select class="rating-star puntaje-producto" data-url="{% url 'puntuar_producto' %}" data-producto="{{x.id}}" data-usuario="{{request.user.id}}" name="rating" autocomplete="off">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
    </select>
</div>
<h6 class="txt-info">{% rating_promedio x.id %}</h6>
{% endif %}        

我得到的错误是 Unused ''x'' at end of if expression。

你不能像那样直接在 if 中使用标签。您需要先将其分配给一个变量:

{% puntaje_usuario x as my_val %}
{% if my_val %}
    ...