model.Field
WeekFieldというカスタムを作成しようとしています。データベース フィールドは、8 文字の文字列としてYYYYmmdd
. 私はそのために拡張models.CharField
しました:
class WeekField(models.CharField):
def __init__(self, *args, **kwargs):
super(WeekField, self).__init__(max_length=8, *args, **kwargs)
def to_python(self, value):
return Week(value)
def get_prep_value(self, value):
return value.get_id()
上記のWeek
オブジェクトには、日付または形式の文字列のいずれかを取ることができるコンストラクターがありますYYYYmmdd
。
私の問題は、管理画面でテキスト フィールドとして表示されることです。管理者に日付フィールドのように扱うように強制するにはどうすればよいですか?
これを WeekField クラスに追加しようとしましたが、役に立ちませんでした:
def formfield(self, **kwargs):
defaults = {'form_class': forms.DateField}
defaults.update(kwargs)
return super(models.CharField, self).formfield(**defaults)