Ten en cuenta que en las ciencias informáticas un problema suele tener diversas soluciones, así que nosotros enseñamos la mejor y más eficiente.
Solución:
Podrías agregar un clean()
en su formulario para asegurarse de que la fecha no está en el pasado.
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
Ver http://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-a-specific-field-attribute
Otra solución útil es vincular la validación a los campos usando el argumento de palabra clave validators. Esta es una forma práctica de mantener claro el código de su formulario y permitir la reutilización de la lógica de validación. Por ejemplo
def present_or_future_date(value):
if value < datetime.date.today():
raise forms.ValidationError("The date cannot be in the past!")
return value
class MyForm(forms.Form):
date = forms.DateField(...
validators=[present_or_future_date])
Si está utilizando Django 1.2+ y su modelo siempre forzará esta regla, también puede echar un vistazo a la validación del modelo. La ventaja será que cualquier modelform basado en el modelo utilizará esta validación automáticamente.
Puedes corroborar nuestra publicación escribiendo un comentario o puntuándolo te estamos eternamente agradecidos.