Это может быть немного сложно с локализацией иногда. Обычно вы добавляете DATE_INPUT_FORMATS к вашим настройкам. Форматы из этого списка будут приняты при вводе данных в поле даты, означающее добавление
DATE_INPUT_FORMATS = [
'%d-%m-%Y'
]
к вашим настройкам должно исправить вашу проблему. Но иногда это может быть немного сложнее, когда USE_L10N
установлен на True
, потому что в этом случае формат, определяемый локалью, имеет более высокий приоритет и будет применяться вместо него. По этой причине я предлагаю вам не жестко кодировать формат даты в вашем jQuery datepicker, а использовать значения по умолчанию и получить формат даты из DATE_INPUT_FORMATS. Нечто подобное должно сработать:
from django.utils import formats
# First date format in default (English) is '%Y-%m-%d', most European languages '%d.%m.%Y' etc.
date_format = formats.get_format("DATE_INPUT_FORMATS")[0]
date_format = date_format.split()[0].replace('%Y', 'YY').replace('%d', 'dd').replace('%m', 'mm')
и используйте в нем свой шаблон:
<script>
$( function() {
$( ".vdate" ).datepicker({
dateFormat: "{{ date_format }}"
});
} );
</script>
Таким образом, формат даты будет соответствовать независимо от приоритета формата. Желательно, чтобы вы включили формат даты в свой собственный контекстный процессор . Теперь он будет включен в контекст всех ваших шаблонов.
my_context_processor.py
from django.utils import formats
def common_context(request):
''' Common variables used in templates '''
date_format = formats.get_format("DATE_INPUT_FORMATS")[0]
date_format = date_format.split()[0].replace('%Y', 'YYYY').replace('%d', 'dd').replace('%m', 'mm')
return {'date_format ': date_format}