Saltar al contenido

Django forms.DateInput no aplica los atributos dados en el campo attrs

Solución:

Desde que tu no publiqué su código de formulario, mi mejor suposición es que creó una instancia explícita de un campo de formulario como este confirmó mi suposición publicando el código que se parece aproximadamente a esto:

class MyForm(forms.ModelForm):
    my_date_field = forms.DateField()

    class Meta:
        model = MyModel
        widgets = {
            'my_date_field': forms.DateInput(format=('%d-%m-%Y'), 
                                             attrs={'class':'myDateClass', 
                                            'placeholder':'Select a date'})
        }

Puedo decir que no está funcionando porque si crea una instancia explícita de un campo de formulario como este, Django asume que desea definir completamente el comportamiento del campo de formulario; por lo tanto, no puede usar el widgets atributo del interior Meta clase.

La nota al final de la sección sobre cómo anular los tipos de campo o widgets predeterminados establece que:

Los campos definidos declarativamente se dejan como están, por lo tanto, se ignoran las personalizaciones realizadas en los meta atributos, como widgets, etiquetas, help_texts o error_messages; estos solo se aplican a los campos que se generan automáticamente.

Basado en la respuesta de @Martin y leyendo la documentación de Django, la solución final debería ser:

class MyForm(forms.ModelForm):
    my_date_field = forms.DateField(
        widget=forms.DateInput(format=('%d-%m-%Y'), 
                               attrs={'class':'myDateClass', 
                               'placeholder':'Select a date'}))

    class Meta:
        model = MyModel
        widgets = {
        }
¡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 *