0
我試圖創建一個名爲WeekField的自定義model.Field
。數據庫字段必須存儲爲YYYYmmdd
中的8個字符的字符串。我已經爲該擴展models.CharField
:在Django中,創建一個自定義model.Field,它像CharField那樣存儲數據,但其行爲像管理員中的forms.DateField
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)
ORM知道將它視爲字段而不是日期字段嗎? –
我試圖讓我的自定義字段子類'DateField'。即使我的get_prep_value返回一個String,Django也會在DB中將該字段設置爲Date。我想我會沿着這條路線走,因爲數值並不一定是DB中的字符串。 –