#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'})
И этого должно быть достаточно 😉