我有一个项目,其中我使用嵌套的for循环来筛选项,但结果不断重复出现本不应该如此的项。请告诉我,我哪里错了?
def order_list(request):
orders = Order.objects.all()
current_user = request.user
user_list = orders.filter(user=current_user.id)
success = orders.filter(paid=True)
fail = orders.filter(paid=False)
return render(request, 'orders/order/order_list.html', {
'orders': orders,
'success': success,
'fail': fail,
'user_list':user_list,
'current_user':current_user,
})html
{% for ls in orders %}
{% for x in user_list %}
{% for od in success %}
<div class="card mb-3" style="max-width: 540px;">
<div class="row no-gutters">
<div class="col-md-3">
<img alt="product img" class="card-img" src="...">
</div>
<div class="col-md-9">
<div class="card-body" style="position: relative;">
<h5 class="card-title">Product {{ od.id }}</h5>
<a href="#" style="position: absolute; top: 5px; right: 5px;">View
Details</a>
<p class="card-text">Transaction ID</p>
<p class="card-text"><small class="text-muted">Delivered at
{{od.reference_id}}</small></p>
</div>
</div>
</div>
</div>
{% endfor %}
{% endfor %}
{% endfor %}实际结果应该与以下屏幕截图中的结果相同

但我明白了;

请检查图片,谢谢。
发布于 2020-12-02 23:52:32
你正在做许多不合逻辑的事情,把所有事情都放在一个单一的上下文中会更容易:
def order_list(request):
template_name = 'orders/order/order_list.html'
user = request.user
orders = Order.objects.filter(user=user).filter(paid=True)
return render(request, template_name, {
'orders': orders
})您的模板将如下所示:
{% for order in orders %}
<div class="card mb-3" style="max-width: 540px;">
<div class="row no-gutters">
<div class="col-md-3">
<img alt="product img" class="card-img" src="...">
</div>
<div class="col-md-9">
<div class="card-body" style="position: relative;">
<h5 class="card-title">Product {{ order }}</h5>
<a href="#" style="position: absolute; top: 5px; right: 5px;">View
Details</a>
<p class="card-text">Transaction ID</p>
<p class="card-text"><small class="text-muted">Delivered at
{{ order.reference }}</small></p>
</div>
</div>
</div>
</div>
{% endfor %}这会对您有所帮助,因为您没有添加模型,所以我根据看到的字段假设数据
https://stackoverflow.com/questions/65111151
复制相似问题