Southのschemamigrationでエラー
schemamigrationで以下のエラーになりました。
! Cannot freeze field 'apps.person.shirt_size' ! (this field has class books.models.ShirtSizeField) ! 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). ! To fix this, read http://south.aeracode.org/wiki/MyFieldsDontWork
どうやらモデルにカスタムフィールドを使ったのが原因らしい
apps.models
class ShirtSizeField(models.CharField): def get_choices(self, include_blank=True, blank_choice=BLANK_CHOICE_DASH): return super(ShirtSizeField, self).get_choices(include_blank, [("", u"選択してください")]) class Person(models.Model): SHIRT_SIZES = ( ('S', 'Small'), ('M', 'Medium'), ('L', 'Large'), ) name = models.CharField(max_length=60) shirt_size = ShirtSizeField(max_length=2, choices=SHIRT_SIZES)
エラーメッセージに含まれているURLのページにhow do i fix it?という節があって直し方が書いてあるので参考にして以下を追加
apps.models.に以下を追加
from south.modelsinspector import add_introspection_rules add_introspection_rules([], ["^appss\.models\.ShirtSizeField"])
これでschemamigrateできるようになった。