我正在尝试创建一个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)