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+, и ваша модель всегда будет вынуждать это правило, вы также можете взглянуть на проверку модели. Преимущество будет заключаться в том, что любая модельная модель, основанная на модели, будет автоматически использовать эту проверку.