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 = {
}