You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django项目中get_absolute_url始终指向同一订单ID的修复求助

问题排查:订单详情链接始终指向固定ID的修复方案

我一眼就看出问题出在你的模板代码里了!你在遍历已支付订单(success)的时候,又嵌套了一个所有订单(orders)的循环,这就导致每个订单卡片里的"View Details"链接都会被最后一个order的ID覆盖,所以不管点哪个订单,都会跳转到最后一个订单的详情页。

问题代码分析

看你这段HTML代码:

{% for od in success %}
...
{% for order in orders %}

View Details

{% endfor %}
...
{% endfor %}

这里的内层循环{% for order in orders %}完全是多余的——你已经在遍历success里的每个订单od了,直接用当前的od生成链接就好,不需要再遍历所有订单。

修复后的代码

1. 修正HTML模板

<div class="col-md-9">
    {% 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>
                    <!-- 去掉多余的orders循环,直接用当前的od生成链接 -->
                    <a href="{{ od.get_absolute_url }}" style="position: absolute; top: 5px; right: 5px;">
                        View Details
                    </a>
                    <p class="card-text">
                        <mark style="color: whitesmoke; background-color: brown;border-radius: 3px;font-weight: bold;">{{transaction}}</mark>
                    </p>
                    <p class="card-text"><small class="text-muted">Delivered at {{od.reference_id}}</small></p>
                </div>
            </div>
        </div>
    </div>
    {% endfor %}
</div>

2. 优化视图代码(可选但推荐)

你的order_list视图里传递了orders变量,但用户的订单列表页面只需要展示当前用户的订单,这个orders变量(所有订单)完全没必要传递,还容易引发类似错误,建议删掉:

def order_list(request):
    current_user = request.user
    success = Order.objects.filter(user=current_user.id, paid=True)
    fail = Order.objects.filter(user=current_user.id, paid=False)
    return render(request, 'orders/order/order_list.html', {
        'success': success,
        'fail': fail,
        'current_user': current_user,
        # 移除多余的orders变量
    })

修复效果

这样修改后,每个订单卡片的详情链接就会正确指向当前订单的ID,不会再出现固定指向某一个订单的问题了。

内容的提问来源于stack exchange,提问作者Adeyemo Toluwanimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:45:08