Я пытался понять влияние настроек DATE_INPUT_FORMATS и то, как Django обрабатывает эти поля данных, но все, что я нахожу, либо мне непонятно (будучи относительно новым для DJango), либо, кажется, относится к формам, которые непохоже, здесь применимо.
У моей модели пользователя есть поле для дня рождения:
class LocalUser(AbstractUser):
birthday = models.DateField(blank=True, null=True)
, и я хочу создать пользователей из CSV. Я загружаю CSV и обрабатываю его содержимое:
class InputFileForm(forms.Form):
file = forms.FileField()
def process_file(self):
file = io.TextIOWrapper(self.cleaned_data['file'].file, encoding='utf-8-sig')
reader = csv.DictReader(file, delimiter=";")
l = LocalUser(**dict(line))
l.save()
CSV содержит даты, например, в формате «01.01.1999». Это работает, когда я переформатирую даты, например, через line["birthday"] = datetime.strptime(line["birthday"], '%d.%m.%Y')
, но я уверен, что должно быть более приятное решение, где мне не нужно изменять код везде, где день рождения передается пользовательской модели в виде строки.
В файле settingy.py я добавил:
#USE_L10N = False
from django.conf.global_settings import DATE_INPUT_FORMATS
DATE_INPUT_FORMATS += ('%d.%m.%Y',)
, но это не помогает.
Полученное сообщение об ошибке:
ValidationError at / import_export / import_data
["'11.02.1993' имеет недопустимый формат даты. Оно должнобыть в формате ГГГГ-ММ-ДД. "]
У вас есть какие-либо рекомендации по решению этой проблемы?