非常に単純なカスタム フィールドを作成しようとしていますが、機能しないようです。
現在、このフィールドをアプリケーションのほぼすべてのモデルに追加しています。コードの重複を避けるために、カスタム フィールドとして指定したいと考えています。
identifier = models.CharField(
max_length = 20,
unique = True, validators = [validators.validate_slug],
help_text = "Help text goes here."
)
私が持っているのはこれです:
class MyIdentifierField(models.CharField):
description = "random string goes here"
__metaclass__ = models.SubfieldBase
def __init__(self, *args, **kwargs):
kwargs['max_length'] = 20
kwargs['unique'] = True
kwargs['validators'] = [validators.validate_slug]
kwargs['help_text'] = "custom help text goes here"
super(MyIdentifierField, self).__init__(*args, **kwargs)
def db_type(self, connection):
return 'char(25)'
次のように使用できるようにします。
identifier = MyIdentifierField()
ただし、実行するとpython manage.py schemamigration --auto <myapp>
、次のエラーが発生します。
! Cannot freeze field 'geral.seccao.identifier'
! (this field has class geral.models.MyIdentifierField)
! 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
推奨される Web ページを確認しましたが、まだ回避策が見つからないようです。どんな助けでも大歓迎です。ありがとう。