Saltar al contenido

Django: cómo configurar DateField para que solo acepte fechas de hoy y futuras

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *