如何在django中不使用{%for%}过滤查询集中的项目

时间:2018-06-12 13:43:07

标签: python django

我想检查一些字段是否存在于查询集中,其结果有很多行,这里是文件

views.py

def home(request):
    all_dress = Item.objects.filter(dress_active=True).order_by('-created_at')
    page = request.GET.get('page', 1)
    paginator = Paginator(all_dress, 12)
    try:
        dresss = paginator.page(page)
    except PageNotAnInteger:
        dresss = paginator.page(1)
    except EmptyPage:
        dresss = paginator.page(paginator.num_pages)
    context = {
        'dresss': dresss,
    }
    return render(request, 'fostania_web_app/home.html', context)

context_processors.py 我获取user_Favs查询

def include_user_favs(request, user_favs=None):
    if request.user.is_anonymous:
        pass
    else:
        user_favs = Favorite.objects.filter(user=request.user)

    context = {
        'user_favs': user_favs,
    }

    return (context)

这是我的 HTML 代码:

                    {% if user.is_authenticated %}

                               {% if user_favs %}
                      {% for item in user_favs %}
                  {% if item.item == dress %}
                                                      <a href="{% url 'favorite_item' dress.id %}">
                  <img src="{% static 'img/star-yes.png' %}" title="مسح من  الفساتين المفضلة"></a>
{% else %}
                                <a href="{% url 'favorite_item' dress.id %}">
                  <img src="{% static 'img/star_no.png' %}" title="إضافة إلى الفساتين المفضلة"></a>

                          {% endif %}
                          {% endfor %}
              {% else %}
                                              <a href="{% url 'favorite_item' dress.id %}">
                  <img src="{% static 'img/star_no.png' %}" title="إضافة إلى الفساتين المفضلة"></a>
              {% endif %}
              {% endif %}

我只是得到一个多重结果,因为它使用for循环检查每个项目,如果它找到更多的那个项目,它给了我不止一个答案

1 个答案:

答案 0 :(得分:1)

不完全确定,但我假设您只过滤到数据库中的一个对象但仍然接收多个对象。

根据我的经验,这是因为分页和过滤器集有时会很难。 看看这个question