Skip to main content
 首页 » 编程设计

python之Django 用一些空字段写入 csv

2024年10月17日33mate10pro

我正在尝试将一些搜索结果写入 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 条件将导致空白被写入文件