Django Модель DateField и входной прибор - PullRequest
0 голосов
/ 11 марта 2020

Файл модели включает в себя:

class Foo(models.Model):
    bar = models.DateTimeField()

Файл Fixture. json включает в себя:

  {
  "model": "app.Foo",
  "pk": "1",
  "fields": {
      "bar": "2018/4/20",
  }
},

, когда я пытаюсь добавить приборы с "python manage.py loaddata "результат:

django.core.serializers.base.DeserializationError: Problem installing fixture 
'C:\Projects\TestProject\app\fixtures\file.json': ['“2018/4/20” value has an 
invalid format. It must be in Y
YYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format.']: (app.Foo:pk=1) field_value was '2018/4/20'

, поэтому мой вопрос: как я могу добавить формат даты с" ГГГГ / ММ / ДД "в мои файлы модели?

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Django models.DateField и models.DateTimeField ожидают ввода либо в виде python datetime объектов, либо в формате ISO (с разделителями "-", а не "/"). Это не то, что вы можете легко изменить, потому что это также то, что используется для сохранения значений в базе данных. То, что вы хотите, не возможно.

Единственный вариант, который я вижу, это то, что вы пишете свою собственную команду управления , которая сначала анализирует ваше устройство json, изменяя формат дат на ISO и Сохранение в новый файл с последующим вызовом команды loaddata из собственного метода handle().

Примечание. Соответствующие поля формы , forms.DateField являются гибкими и могут принимать различные форматы ввода и позволяют указать, какой формат ввода вы хотите использовать. Фактически, если вы включите i18n, они будут принимать международные форматы ввода, такие как 2020/03/12. Но это на самом деле не поможет вам с loaddata, который вообще не использует форму.

0 голосов
/ 11 марта 2020

вы используете DateTimeField (), а ваши данные - только дата, поэтому вместо DateTimeField () используется ошибка DateField (), например: class Foo(models.Model): bar = models.DateField()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...