気ままなタンス*プログラミングなどのノートブック

プログラミングやRPGツクール、DTM、VOCALOIDについてのんびり書きます。

【Django】southでマイグレーションエラー

諸事情で、Django1.6.8とsouthを利用している。
(Django1.7からはマイグレーションツールが標準で含まれているため、southは不要)

southを利用していると、以下のエラーが発生した。

South cannot introspect some fields; this is probably because they are custom ! fields.If they worked in 0.6 or below, this is because we have removed the ! models parser (it often broke things).

てきとうな翻訳
・Southはいくつかのフィールドをイントロスペクトできないよ
・0.6以前で動いてるときに色々と壊しちゃうから、モデルパーサーを削除したんだ

Cannot freeze field 'appname.modelname.fieldname' ! (this field has class appname.fields.CustomField)
To fix this, read http://south.aeracode.org/wiki/MyFieldsDontWork

てきとうな翻訳
・フィールドを凍結できない!これカスタムフィールド持ってるよ!
・このページ読んで修正してね

修正方法

models.pyに対して、イントロスペクトルールを追加してあげる

from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^appname\.fields\.CustomField"])

イントロスペクト(イントロスぺクション?)とは

ざっくりとWebを調べたところ、
プログラム実行時にオブジェクトの情報を参照するルールとのこと。