Djangoで多対多のカラムがあるときにdjango-import-exportを使う方法

この記事は旧ブログから移転した記事です。

前置き

この記事は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図で見…