Django: Как установить DateField только для принятия дат "Сегодня и в будущем"

Я искал способы установить свою форму Django только для принятия дат, которые являются сегодня или днями в будущем. У меня в настоящее время есть jQuery datepicker на интерфейсе, но вот поле формы для модели.

Спасибо за помощь, очень ценю.

date = forms.DateField(
    label=_("What day?"),
    widget=forms.TextInput(),
    required=True)

Ответы

Ответ 1

Вы можете добавить метод clean() в свою форму, чтобы убедиться, что дата не в прошлом.

import datetime

class MyForm(forms.Form):
    date = forms.DateField(...)

    def clean_date(self):
        date = self.cleaned_data['date']
        if date < datetime.date.today():
            raise forms.ValidationError("The date cannot be in the past!")
        return date

См. http://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-a-specific-field-attribute

Ответ 2

Если вы используете Django 1.2+, и ваша модель всегда будет вынуждать это правило, вы также можете взглянуть на проверку модели. Преимущество будет заключаться в том, что любая модельная модель, основанная на модели, будет автоматически использовать эту проверку.