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

Django TabularInline重写模板后,如何传递数据至模板并显示?

解决Django SortableTabularInline模板传值问题

问题根源

你在commercial_proposal_productadmin(Inline类)中重写change_view方法无效——因为Inline组件是嵌入在父模型的ModelAdmin变更页面中渲染的,Inline本身并不独立处理change_view请求,该方法属于父ModelAdmin的逻辑范畴。

正确实现方案

方案1:重写Inline类的get_context_data方法

直接在Inline类中添加方法注入自定义上下文数据:

class commercial_proposal_productadmin(SortableTabularInline):
    model = commercial_proposal_product
    extra = 0
    template = "admin/tabular.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        # 注入自定义数据到模板上下文
        context['world'] = 'hello'
        return context

方案2:通过父ModelAdmin传递数据

如果需要从父模型的管理类层面传递数据,可在父ModelAdmin的change_view中添加extra_context:

# 假设父模型对应的ModelAdmin是CommercialProposalAdmin
class CommercialProposalAdmin(admin.ModelAdmin):
    inlines = [commercial_proposal_productadmin]

    def change_view(self, request, object_id, form_url='', extra_context=None):
        extra_context = extra_context or {}
        extra_context['world'] = 'hello'
        return super().change_view(request, object_id, form_url, extra_context=extra_context)

此时在Inline模板中,可通过{{ view.extra_context.world }}获取该值。

模板输出数据

在你的admin/tabular.html模板中,直接使用模板变量输出:

<!-- 示例:在模板任意位置添加输出 -->
<p>{{ world }}</p>

内容的提问来源于stack exchange,提问作者Илья Денисов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:15:23