我爲我的一個模型使用DateTimeField。它有一個custom validator,檢查,沒有日期將被接受。如何顯示Django管理員中的DateTimeField的自定義驗證錯誤?
如果我提供的日期在將來,錯誤會正確提出,但管理員顯示Bitte eine Liste mit Werten eingeben.
(Enter a list of values.
)而不是我的驗證錯誤消息。
我怎樣才能讓管理員顯示我自己的驗證錯誤信息呢?
這裏是我的自定義驗證(full source in this gist)的相關部分:
@deconstructible
class DateValidator():
# …
def __call__(self, value):
"""
Check *value* against the stored *date*.
If *date* is callable, it's return value is used, if not, it is used
directly.
"""
# get min/max date
try:
date = self.date()
except TypeError:
date = self.date
# check
if self.equal and value == date:
return
if self.after:
if value > date:
return
else:
if value < date:
return
raise ValidationError(
self.message, code='invalid', params={
'value': value.strftime(self.DATETIME_FORMAT),
'date': date.strftime(self.DATETIME_FORMAT)
}
)
我用它是這樣的:
@python_2_unicode_compatible
class Article(models.Model):
# …
pub_date = models.DateTimeField(
'Veröffentlichungsdatum', blank=True, null=True,
validators=[DateValidator(timezone.now)],
help_text=("…")
)
將相關代碼添加到帖子中wo uld有助於調試,特別是你如何調用驗證器。 – Wolph