2016-11-07 61 views
2

我試圖將一些搜索結果寫入CSV文件,但能夠將某些字段設置爲空。現在它正在編寫整個搜索字符串,但這是我發現在沒有字段時處理錯誤的唯一方法。Django使用一些空字段寫入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,例如。有沒有一種方法可以告訴它,如果沒有任何東西(前面的xample,沒有obj.planting_site.site_address),就用空白替代?

在這樣做的JSON結果從另一個網站拉我一直在做obj.get('tree_id',''),但我不能這樣做,當對象是內部保存的模型。

回答

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 '' 
       ]) 

如果對象屬性爲空,或者條件將導致空被寫入到文件

+0

謝謝你,成功了!我沒有嘗試過那個,因爲我覺得它太簡單了......感嘆。向前! –

+0

很高興有幫助 – e4c5