Django AdminDateWidget отображается как TextInput

#python #django #forms

#python #django #формы

Вопрос:

Я не понимаю, как работают виджеты.

Я попробовал этот минимальный пример :

в моем forms.py

     class PartialResetForm(forms.Form):
        date = forms.DateField(
            label="Starting date",
            widget=AdminDateWidget()
        )
 

в моем admin/intermediary_reset_page.html

 {% extends "admin/base_site.html" %}

<!--Loading necessary css and js -->
{{ form.media }}

{% block content %}
<form action="" method="post">{% csrf_token %}
    <!--  The code of the form with all input fields will be automatically generated by Django  -->
    {{ form }}
    <!--  Link the action name in hidden params -->
    <input type="hidden" name="action" value="custom_action" />
    <!--  Submit! Apply!  -->
    <input type="submit" name="apply" value="Submit" />
</form>
{% endblock %}
 

в моем admin.py как определение действия

     def custom_action(self, request, queryset):    
        form = PartialResetForm()

        return render(request, "admin/intermediary_reset_page.html", {
            "items": queryset, "form": form
        })
 

На данный момент меня не волнует набор запросов, это будет моя следующая тема. В этом простом примере я хотел иметь календарь, чтобы помочь выбрать дату, но появился только TextInput. Я полагаю, это связано с тем, что AdminDateWidget наследует от TextInput.

Мой вопрос в том, почему он не отображается в виде календаря? Я импортировал носитель и объявил свой виджет, я не понимаю, что еще я должен делать.

Ответ №1:

вы должны объявить тип

 AdminDateWidget(attrs={'type': 'date'})
 

И этого должно быть достаточно 😉