私の状況は似ているが、従来のデータは一貫TrueとFalse表現するためにYとNを使用しますが、私はいくつかのフィールドの追加の問題を抱えていますNullを許可する。だから私のカスタムフィールドの種類があります。私は彼らがあなたがこの状況でできることのもう少し完全な例だと思うし、フォームにこれらのフィールドを表示/編集するためにはより良いと思われるBooleanFieldタイプから継承しました。
from django.db import models
class YNBooleanField(models.BooleanField):
def __init__(self, *args, **kwargs):
kwargs['max_length'] = 1
super(YNBooleanField, self).__init__(*args, **kwargs)
def to_python(self, value):
if value in ('Y', 'y'):
return True
elif value in ('N', 'n'):
return False
else:
raise ValueError
def get_prep_value(self, value):
if value:
return 'Y'
else:
return 'N'
class NullYNBooleanField(models.NullBooleanField):
def __init__(self, *args, **kwargs):
kwargs['max_length'] = 1
super(NullYNBooleanField, self).__init__(*args, **kwargs)
def to_python(self, value):
if value is None:
return None
elif value in ('Y', 'y'):
return True
elif value in ('N', 'n'):
return False
else:
raise ValueError
def get_prep_value(self, value):
if value is None:
return None
elif value:
return 'Y'
else:
return 'N'
関連の重要なヒントはあなたにも変換することget_prep_value()を実装してはならないhttp://stackoverflow.com/questions/3988171/custom-fields-to-python-not-working-django –