У объекта 'DateField' нет атрибута 'value_from_datadict'
Я везде искал ответ на этот вопрос, но я просто пытаюсь добавить виджет к моему DateField, созданному на моем models.py, где вы можете увидеть фактический календарь, как если бы вы делали это непосредственно через html с input type=date. Поскольку у меня несколько полей даты, это стало проблемой, потому что все они должны иметь тот же формат, что и остальная часть формы и виджет. Чувствую, что на вопрос уже был дан ответ, но ни один из ответов или вещей, которые я нашел, не дал правильного ответа.
forms.py
lass Form_InfoPersonal(ModelForm):
class Meta:
model = InfoPersonal
fields = '__all__'
widgets = {
'Nombres_y_Apellidos_completos': forms.TextInput(attrs={'class':'form-control form-control-lg mt-3 ml-4 w-75','required':True}),
'cargo_act': forms.TextInput(attrs={'class':'form-control form-control-lg mt-3 ml-4 w-75','required':True}),
'Lugar': forms.TextInput(attrs={'class': 'form-control form-control-lg mt-3 ml-4 w-75', 'required':True}),
'Fecha': forms.DateField(widget=NumberInput(attrs={'type':'date'})),
'grado': forms.TextInput(attrs={'class':'form-control form-control-lg mt-3 ml-4 w-75','required':False}),
'Edad' : forms.NumberInput(attrs={'class': 'form-control form-control-lg mt-3 ml-4 w-75', 'required':True}),
'Tipo_de_Sangre' : forms.TextInput(attrs={'class': 'form-control form-control-lg mt-3 ml-4 w-75','required':True}),
'Estatura': forms.NumberInput(attrs={'class': 'form-control form-control-lg mt-3 ml-4 w-75', 'required':True}),
'Direccion_Domicilio_actual': forms.TextInput(attrs={'class': 'form-control form-control-lg mt-3 ml-4 w-75', 'required':True}),
'Manzana':forms.TextInput(attrs={'class': 'form-control form-control-lg mt-3 ml-4 w-75', 'required':True}),
'Villa': forms.TextInput(attrs={'class': 'form-control form-control-lg mt-3 ml-4 w-75', 'required':True}),
'parroquia': forms.TextInput(attrs={'class': 'form-control form-control-lg mt-3 ml-4 w-75', 'required':True}),
'Telefono_Domicilio' : forms.NumberInput(attrs={'class': 'form-control form-control-lg mt-3 ml-4 w-75' }),
'Telefono_Celular': forms.NumberInput(attrs={'class': 'form-control form-control-lg mt-3 ml-4 w-75', 'required':True}),
'Telefono_Familiar': forms.NumberInput(attrs={'class': 'form-control form-control-lg mt-3 ml-4 w-75', 'required':True}),
'cedula': forms.NumberInput(attrs={'class': 'form-control form-control-lg mt-3 ml-4 w-75', 'required':True}),
}
views.py
def formu_view(request):
if request.method == 'POST':
form = Form_InfoPersonal(request.POST)
if form.is_valid():
form.save()
messages.success(request, 'Su formulario ha sido llenado y guardado correctamente')
return render(request, '')
else:
form= Form_InfoPersonal()
return render(request, 'users/formu.html', context={'form':form})
Вы используете неправильный класс для виджета. Изменить
'Fecha': forms.DateField(widget=NumberInput(attrs={'type':'date'})),
to
'Fecha': forms.DateInput(widget=NumberInput(attrs={'type':'date'})),
^^^^^^^^^
forms.DateField
предназначен для объявления поля формы. У него нет метода value_from_datadict()
, как того требует валидация. forms.DateInput
- это виджет, используемый для ввода даты. Он имеет требуемый метод.