0

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

1 回答 1

1

如果您改为子类 DateField 并提供一个 get_prep_value/to_python 将其转换为您想要存储在数据库中的文本格式怎么办?

https://docs.djangoproject.com/en/dev/howto/custom-model-fields/#django.db.models.Field.get_db_prep_value

于 2012-12-19T18:30:04.667 回答