DjangoのGenericForeignKeyとdumpdata

GenericForeignKeyって使いにくい
DjangoのGenericForeignKeyってdumpdata→loaddataするとデータがズレるし使えないよねーって思ってた時期が僕にもありました。
なんでかって言うと、contenttypesの順番がsyncdbする度に変わるから、dumpdataした環境とloaddataした環境でcontenttypesが変わっていて別のモデルに紐付けられちゃうんですね。
前職ではそれを回避するために、対象のモデル群を固定で持ってるGenericForeignKeyっぽいモデルを自前で作ったりもしてました。


でも、そんなことなかった
Django1.2からdumpdataがGenericForeignKeyに対応していたらしく --natural オプションを付ければ問題なくloaddata出来るようになってました。
dumpdataしたjsonを見ればわかるのですが、オプションなしだとcontenttypesのidが入っている箇所がモデル名になっています。
これで気兼ねなくGenericForeignKeyを使えますね!