python - Django 写入带有一些空字段的 csv

标签 python django csv

我正在尝试将一些搜索结果写入 CSV 文件,但能够将某些字段留空。现在它正在写入整个搜索字符串,但这是我发现在没有字段时处理错误的唯一方法。

这是我的代码:

if request.POST:
    if request.POST.get('search_type_id') == "1":
        response = HttpResponse(content_type='text/csv')
        response['Content-Disposition'] = 'attachment; filename="Report Results.csv"'

        export_data = request.session['report_results']
        report_results = Tree.objects.filter(id__in=[instance['id'] for instance in export_data]).order_by('-created_at')
        writer = csv.writer(response)
        writer.writerow(['Tree ID', 'Int ID', 'Site Address', 'Site Street', 'Date Planted'])
        for obj in report_results:
            writer.writerow([
                [obj.id_shared, ''],
                [obj.id_int, ''],
                [obj.planting_site.site_address, ''],
                [obj.planting_site.site_street, ''],
                [obj.planted_date, '']
                ])
        return response

现在,我的 CSV 返回空字段的帐户,但给我一个 [250264, ''] 作为树 ID,例如。有没有办法告诉它在没有任何内容的情况下替换空白(例如,没有 obj.planting_site.site_address)?

在对从另一个站点提取的 JSON 结果执行此操作时,我一直在执行 obj.get('tree_id', ''),但当对象是内部保存的模型时,我无法执行此操作。

最佳答案

尝试这样的事情。

writer.writerow([
                obj.id_shared or '',
                obj.id_int or '',
                obj.planting_site.site_address or '',
                obj.planting_site.site_street or '',
                obj.planted_date or ''
                ])

如果对象属性为空,则 or 条件将导致将空白写入文件

关于python - Django 写入带有一些空字段的 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40476584/

相关文章:

python - 如何在 Django 中的每个管理页面加载上运行 python 函数

xml - 用于给定 XML 结构的 XSLT(用于 CSV)

python - numpy 中两个列表的成对操作(距离)

python - If 语句没有正确分支

python - 提交表单后,两个字段未保存。 Django

django - TypeError at/registration __init__() 得到了一个意外的关键字参数 'null'

mysql - 使用 Rubygems 将 CSV 文件数据加载到 Mysql

python-3.x -\ufeff 在 Visualstudio 上写入和读取 csv 文件

python - 根据列的最大行数创建新行

python - 扭曲的 deferToThread,不适用于 Mock.patch()