DjangoでモデルをCSVに変換する方法


  1. 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 1Field 2Field 3はCSVのヘッダーとして使用されるフィールドの名前です。

  1. 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の形式に合わせることができます。