C.B. C.B. - 1 month ago 18
Python Question

Django form.as_p DateField not showing input type as date

Working on my first django app, and I have a model defined with some

DateFields
, and then a
ModelForm
off of that model i.e.

models.py

class MyModel(models.Model):
...
my_date = models.DateField('my date')
...

class MyModelForm(ModelForm):
class Meta:
model = MyModel
fields = '__all__'


views.py

def show(request):
form = MyModelForm
template_name = 'myapp/show.html'
return render(request,template_name,{'form':form})


and then in my html I use the
.as_p
to have django render the form for me

<form action="/show/" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>


But the
DateFields
have input type text, not date. Is there a way to change this?

Answer

You can create a custom widget:

from django import forms

class DateInput(forms.DateInput):
    input_type = 'date'

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = '__all__'
        widgets = {
            'my_date': DateInput()
        }