Queryset上的Django forloop返回相同的us

2024-04-26 09:27:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Django中创建了一个queryset来按位置进行过滤

1)如果未键入位置,则页面应显示所有用户

2)如果键入的位置与另一个用户匹配,则只应显示该用户

我在queryset上运行一个forloop,用与过滤器匹配的用户填充页面

现在,页面返回同一个用户两次,没有显示任何其他用户

这是一张图片problem

有人能诊断出哪里出了问题吗

我省略了不相关的代码

过滤器.py

import django_filters
from .models import Profile

class ProfileFilter(django_filters.FilterSet):
    class Meta:
        model = Profile
        fields = {
            'city': ['iexact'],
        }

视图.py

@login_required
def profile_filter(request):
    f = ProfileFilter(request.GET, queryset=Profile.objects.all())
    return render(request, 'profile/profile_filter.html', {'filter': f})

筛选器.html

{% for profile in filter.qs %}
                  <img class="img-thumbnail account-img center" src="{{ MEDIA_URL }}{{ user.profile.image.url }}" width="100" class="img-fluid mx-auto d-block" alt="Card image cap">
                      <div class="card-body padding-success">
                            <h3 class="marker">{{ user.first_name }} {{ user.last_name }}</h3>
                            <h3 class="marker">City: {{ user.profile.city }}</h3>
                            <br><button type="submit" class="small" value="submit" href="{% url 'register' %}">Message?</button>
                      </div>
                </div>
          {% endfor %}

Tags: 用户pydiv过滤器img键入request页面
1条回答
网友
1楼 · 发布于 2024-04-26 09:27:33

在for循环中根本不引用过滤器中的概要文件;使用user,它会自动填充当前登录用户的值。应该使用for循环中定义的变量profile

{% for profile in filter.qs %}
      <img class="img-thumbnail account-img center" src="{{ MEDIA_URL }}{{ profile.image.url }}" width="100" class="img-fluid mx-auto d-block" alt="Card image cap">
          <div class="card-body padding-success">
                <h3 class="marker">{{ profile.user.first_name }} {{ user.last_name }}</h3>
                <h3 class="marker">City: {{ profile.city }}</h3>
                <br><button type="submit" class="small" value="submit" href="{% url 'register' %}">Message?</button>
          </div>
    </div>
{% endfor %}

相关问题 更多 >