- Djangoの組み込みメソッドを使用する方法: Djangoには、モデルのデータをCSVに変換するための組み込みメソッドがあります。以下はその例です。
import csv
from django.http import HttpResponse
def export_to_csv(request):
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="export.csv"'
writer = csv.writer(response)
writer.writerow(['Field 1', 'Field 2', 'Field 3']) # CSVのヘッダーを書き込む
# モデルのデータを取得してCSVに書き込む
queryset = YourModel.objects.all()
for obj in queryset:
writer.writerow([obj.field1, obj.field2, obj.field3]) # モデルのフィールドをCSVに書き込む
return response
上記の例では、YourModel
はモデルの実際の名前に置き換える必要があります。この例では、Field 1
、Field 2
、Field 3
はCSVのヘッダーとして使用されるフィールドの名前です。
- pandasを使用する方法: pandasは、データ操作や変換のための強力なライブラリです。以下は、pandasを使用してモデルをCSVに変換する例です。
import pandas as pd
from django.http import HttpResponse
def export_to_csv(request):
queryset = YourModel.objects.all()
# モデルのデータを辞書形式に変換
data = [{'Field 1': obj.field1, 'Field 2': obj.field2, 'Field 3': obj.field3} for obj in queryset]
# 辞書形式のデータをDataFrameに変換
df = pd.DataFrame.from_records(data)
# DataFrameをCSV形式に変換
csv_data = df.to_csv(index=False)
# CSVデータをHttpResponseとして返す
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="export.csv"'
response.write(csv_data)
return response
上記の例では、YourModel
とフィールドの名前を実際のモデルとフィールドに置き換える必要があります。
これらの方法を使用すると、Djangoのモデルを簡単にCSV形式に変換することができます。必要に応じて、上記のコードをカスタマイズして、モデルのフィールドやCSVの形式に合わせることができます。