2011-02-09 20 views
14

He estado buscando formas de configurar mi formulario Django para que solo acepte fechas que son hoy o días en el futuro. Actualmente tengo un jQuery datepicker en la interfaz, pero aquí está el campo de formulario de un modelo.Django: Cómo configurar DateField para aceptar solo las fechas actuales y futuras

Gracias por la ayuda, muy apreciada.

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

Respuesta

24

Se podría añadir un método clean() en su forma de asegurar que la fecha no se encuentra 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

+0

Awesome gracias por la respuesta! – Emile

+1

Hay un error en su respuesta, si "date Emile

+0

Disculpa, lo arreglé. – Arnaud

1

Si está utilizando Django 1.2+ y su modelo siempre obligar a esta regla, también puede echar un vistazo a model validation. La ventaja será que cualquier modelo basado en el modelo usará esta validación automáticamente.

Cuestiones relacionadas