【问题标题】:Django write to csv with some empty fieldsDjango用一些空字段写入csv
【发布时间】:2017-03-21 11:16:26
【问题描述】:

我正在尝试将一些搜索结果写入 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', ''),但当对象是内部保存的模型时,我不能这样做。

【问题讨论】:

    标签: python django csv


    【解决方案1】:

    试试这样的。

    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条件将导致空白写入文件

    【讨论】:

    • 谢谢你,成功了!我没有尝试那个,因为我认为它太简单了......叹息。前进!
    • 很高兴能帮上忙
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 2018-03-07
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多