この記事は旧ブログから移転した記事です。
前置き
この記事はdjango-import-exportを多対多に対応させる訳ではなく、DB構造の方で対応しようという内容です。
現状
Djangoでモデルを作成し、DBにCSVデータを流し込むぞ!というときに、django-import-exportが非常に便利だが、多対多リレーションのカラムがあると、素直にdjango-import-exportに頼ることができない。
ネットを調べてみると、対応する方法はヒットしたものの、正直よくわからない・・・
問題点
なぜ今回、多対多の時に困るかというと、Djangoでは多対多リレーションが存在するときに、自動的に中間テーブルを作成してしまう。
通常、Djangoの管理サイトでDBに手動でデータを追加する場合は多対多カラムもポチポチ押せば良いのだが、はて、CSVで流し込みたいときはどうすればいい?となる。
解決策
中間テーブルを自分で定義して、その中間テーブルに合わせたCSVデータを作成し、django-import-exportで流し込む。
中間テーブルについては以下の記事が非常にわかりやすいので参考までに。
やさしい図解で学ぶ 中間テーブル 多対多 概念編 - Qiita
#中間テーブルって?"join table もしくは junction table"とも呼ばれ、その名の通り、2つのテーブルの中間にもう一つ、それぞれに接続されたテーブルを指します。↓ER図で見…