我正在尝试创建名为WeekField的自定义model.Field
。数据库字段必须存储为YYYYmmdd
中的8个字符的字符串。我为此扩展了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)
答案 0 :(得分:1)
如果您将DateField子类化并提供get_prep_value / to_python将其转换为您要存储在数据库中的文本格式,该怎么办?