我已经在Django中创建了一个查询集以按位置进行过滤。
1)如果未键入位置,则页面应显示所有用户。
2)如果输入的位置与另一个用户匹配,则仅应显示该用户。
我正在queryset上运行一个forloop,以使用与过滤器匹配的用户填充页面。
此刻,该页面返回了相同的用户两次,但未显示任何其他用户。
任何人都能诊断出问题所在吗?
我省略了不相关的代码。
filters.py
import django_filters
from .models import Profile
class ProfileFilter(django_filters.FilterSet):
class Meta:
model = Profile
fields = {
'city': ['iexact'],
}
views.py
@login_required
def profile_filter(request):
f = ProfileFilter(request.GET, queryset=Profile.objects.all())
return render(request, 'profile/profile_filter.html', {'filter': f})
filter.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 %}
答案 0 :(得分:0)
您根本不会在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 %}