我正在尝试将一些搜索结果写入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',''),但是当对象是内部保存的模型时,我不能这样做。
答案 0 :(得分:2)
尝试这样的事情。
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 ''
])
如果object属性为空,则or条件将导致空白被写入文件