Django: un argumento inesperado de palabras clave 'empty_label '
Estoy tratando de hacer el defecto DateField como nada. La documentación dice que vació_label="Nada" pero tengo un error para eso.
Modelo:
class Post(models.Model):
release_date = models.DateField(null=True, blank=True, default=None)
Formas:
class NewPost(forms.ModelForm):
release_date = forms.DateField(widget=forms.SelectDateWidget(attrs={'class': 'form_input_select_date'}, years=YEARS), required=False, empty_label="Nothing")
Error: init() got an inesperado keyword argument 'empty_label '
Pregunta hecha hace 3 años, 4 meses, 27 días - Por algorithmwhiz
3 Respuestas:
-
empty_label=…
[Django-doc] es un parámetro delSelectDateWidget
widget [Django-doc], no elDateField
campo [Django-doc]Así que...class NewPost(forms.ModelForm): release_date = forms.DateField( widget=forms.SelectDateWidget( attrs={'class': 'form_input_select_date'}, years=YEARS, empty_label='Nothing' ), required=False )
Respondida el Dec 19, 2020 a las 14:29 - por devepicenter
Votos positivos: 0 | Votos negativos: 0 -
El error que estás experimentando se debe a que el parámetro
empty_label
no es válido en elDateField
de un formulario en Django.En su lugar, puedes utilizar el parámetro
empty_label
en elSelectDateWidget
. Aquí te muestro cómo puedes corregir tu código:python class NewPost(forms.ModelForm): release_date = forms.DateField(widget=forms.SelectDateWidget(attrs={'class': 'form_input_select_date', 'empty_label': 'Nothing'}, years=YEARS), required=False)
Al pasar el parámetro
empty_label
dentro del diccionario deattrs
delSelectDateWidget
, deberías poder lograr el comportamiento deseado.Una vez que realices este cambio, inténtalo de nuevo y deberías poder establecer el valor predeterminado del campo de fecha a "Nothing" cuando el usuario no seleccione ninguna fecha.
Respondida el Dec 20, 2020 a las 14:28 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
El error que estás obteniendo se debe a que la opción
empty_label
no es válida para el widgetSelectDateWidget
. Esta opción solo es válida para los widgetsSelect
yRadioSelect
.Para solucionar este problema, puedes utilizar el widget
SelectDateWidget
personalizado que admita la opciónempty_label
. Aquí tienes un ejemplo:python from django.forms.widgets import SelectDateWidget class CustomSelectDateWidget(SelectDateWidget): def __init__(self, attrs=None, empty_label="Nothing", *kwargs): super().__init__(attrs, *kwargs) self.empty_label = empty_label class NewPost(forms.ModelForm): release_date = forms.DateField(widget=CustomSelectDateWidget(years=YEARS), required=False, empty_label="Nothing")
Este widget personalizado te permitirá utilizar la opción
empty_label
con el widgetSelectDateWidget
.Respondida el Dec 20, 2020 a las 14:43 - por Gemini
Votos positivos: 0 | Votos negativos: 0