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

Django实现按Canva主键动态筛选带外键的Bilan表导出Excel的问题

修改步骤

1. 修改视图函数export_users_xls(views.py)

首先给函数新增pk参数接收路由传入的主键,同时替换写死的筛选条件,还可以补充404校验和动态文件名优化:

# 开头新增导入
from django.shortcuts import get_object_or_404
from .models import Canva

def export_users_xls(request, pk):    
    # 校验Canva是否存在,不存在返回404
    canva = get_object_or_404(Canva, pk=pk)
    response = HttpResponse(content_type='application/ms-excel')
    # 动态生成文件名,带上当前Canva名称
    response['Content-Disposition'] = f'attachment; filename="{canva.name}_Canvas.xls"'

    wb = xlwt.Workbook(encoding='utf-8')
    ws = wb.add_sheet('canvas list')

    # 表头部分无需修改
    row_num = 0
    font_style = xlwt.XFStyle()
    font_style.font.bold = True
    columns = ['agregat', 'scf', 'mois1', ]
    for col_num in range(len(columns)):
        ws.write(row_num, col_num, columns[col_num], font_style)

    # 替换写死的canva_id=1为传入的pk
    rows = Bilan.objects.filter(canva_id=pk).values_list('agregat', 'SCF')
    font_style = xlwt.XFStyle()
    for row in rows:
        row_num += 1
        for col_num in range(len(row)):
            ws.write(row_num, col_num, row[col_num], font_style)

    wb.save(response)
    return response

2. 确认模板导出链接配置

你当前的导出链接写法没有问题,前提是你的CanvaConsultlView已经将canva对象传入模板上下文:

<a href="{% url 'bilans:export_excel' canva.pk %}" role="button" class="btn btn-secondary w-50">export to excel</a>

注意:如果你没有在app的urls.py中配置app_name = 'bilans',需要去掉url标签中的bilans:前缀,改为{% url 'export_excel' canva.pk %}

3. 路由校验

你当前的路由配置已经正确设置了pk参数传递,无需修改。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:24:04