Мне удалось настроить виджет даты по умолчанию в админке Django.Я следовал двум урокам (из Простой лучше, чем сложный и Пользовательский виджет Django )
- Написать собственный виджет в файле с именем
widgets.py
внутри вашегоПриложение Django
from django.forms import DateInput
class CustomDatePickerInput(DateInput):
template_name = "app_name/widgets/custom_datepicker.html"
class Media:
css = {
"all": (
"https://cdnjs.cloudflare.com/ajax/libs/datepicker/0.6.5/datepicker.min.css",
)
}
js = (
"https://code.jquery.com/jquery-3.4.1.min.js",
"https://cdnjs.cloudflare.com/ajax/libs/datepicker/0.6.5/datepicker.min.js",
"https://cdnjs.cloudflare.com/ajax/libs/datepicker/0.6.5/i18n/datepicker.es-ES.min.js",
)
Обратите внимание, что файлы CSS и JS, которые могут вам понадобиться, должны быть добавлены во внутренний класс Media
, как показано в приведенном выше коде.В этом случае это добавляет стили для пользовательского выбора даты .
Определите шаблон для вашего виджета, для получения дополнительной информации о параметрах выбора даты смотрите
здесь , поместите этот файл в
app_name/templates/app_name/widgets/custom_datepicker.html
или убедитесь, что этот шаблон соответствует значению
template_name
в вашем пользовательском виджете:
{% load i18n %}
{% include "django/forms/widgets/input.html" %}
{% get_current_language as LANGUAGE_CODE %}
<script>
$(function () {
const DATE_PICKER_OPTIONS = {
'en-us': {
format: 'yyyy-mm-dd',
language: ''
},
'es': {
format: 'dd/mm/yyyy',
language: 'es-ES'
}
};
let options = DATE_PICKER_OPTIONS['{{ LANGUAGE_CODE }}'];
$("input[name='{{ widget.name }}']").datepicker({
format: options.format,
language: options.language
});
});
</script>
В вашем случае вы должны добавить опцию date
(пример: date: new Date(2014, 1, 14)
), так как вы также спрашиваете, как выбрать другой месяц.
Вам нужно указать, какой виджет использовать в поле даты при регистрации вашей модели в админке Django (используйте
formfield_overrides
)
@admin.register(YourModel)
class YourModelAdmin(admin.ModelAdmin):
formfield_overrides = {models.DateField: {"widget": CustomDatePickerInput}}
После этого у вас будет пользовательскийВиджет для дат в админке Django.Имейте в виду, что это просто руководство, вы можете пойти дальше, ознакомившись с двумя указанными мною учебниками.
Примечание: реализация этого виджета также поддерживает интернационализацию.