Django form.as_p DateField does not show input type as date

Working with my first django application, and I have a model defined with some DateFieldsand then a ModelFormoff of that model ie

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 .as_pdjango to display the form for me

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

But it DateFieldshas input type text, not a date. Is there any way to change this?

+10
source share
5 answers

You can create your own 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()
        }
+21
source

No subclass needed DateInput.

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = '__all__'
        widgets = {
            'my_date': DateInput(attrs={'type': 'date'})
        }
+18
source

django-widget-tweaks, , :

{% load widget_tweaks %}
{{form.date|attr:"type:date"}}

:

date = forms.DateField()
+2

. :

Django

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

  • pip install django-datetimepicker
  • 'datetimepicker' INSTALLED_APPS

, .

DateTimePicker DateTimeField, DateField TimeField.

"" "" ""

Django

datetimepicker.widgets DateTimePicker

SampleForm (forms.Form):

datetime = forms.DateTimeField(widget = DateTimePicker(),)

-1

Source: https://habr.com/ru/post/1534897/


All Articles