Валидаторы только проверяют, они не возвращают улучшенный формат;Чистые методы проверяют и возвращают (иногда измененное) значение.
Я думаю, что путь здесь заключается в том, чтобы просто использовать DateField с валидатором в качестве унаследованного класса DateField с установленным значением default_validators.
import datetime
from django.core import exceptions
from django.db import models
from django.utils.translation import ugettext_lazy as _
def validate_date_today_or_later(value):
'Place this in validators.py and import it to keep your model a bit cleaner'
if value < datetime.date.today():
raise exceptions.ValidationError(_('Date must be today or later'))
class TodayOrLaterDateField(models.DateField):
default_validators = [validate_date_today_or_later,]
edit: Вы также можете применить тот же валидатор к полям формы, если вы просто хотите, чтобы он был там, а не во всем приложении.