2015-04-10 4 views
1

На сервере Django создается сервер API. Модель Author имеет DateTimeField, которая сериализуется в форматированную строку iso, такую ​​как 2015-04-10T07:28:45.571039+00:00.Принять datetime isoformat в форме Django

class Author(models.Model): 
    created = models.DateTimeField() 

Клиент выполнен в Javascript. Он строит модель с данным полем datetime, поэтому, чтобы обновить модель, я хотел бы использовать поле в том же формате.

Чтобы обработать запрос на стороне сервера, есть типовая форма

class AuthorForm(forms.ModelForm): 
    class Meta: 
     model = Author 

POST/PUT обработчик запроса вызывает исключение: «Введите действительную дату/время». Причина этого разрешена DATETIME_INPUT_FORMATS. Невозможно принять информацию о часовом поясе с внутренним двоеточием.

Учитывая, что я не хочу удалять поддержку часового пояса (USE_TZ) и хотел бы принимать данные с информацией о часовом поясе, каков способ реализации серверной части? В настоящее время у меня есть два решения: 1) исключить поле вообще 2) использовать CharField в форме с dateutil.parser.parse функция внутри форма чистый способ. Есть ли у вас предложения, как с этим бороться?

ответ

0

Ваше хранилище вряд ли примет время, известное в часовом поясе, ваше приложение django настроено на временные интервалы? Из документов:

Когда поддержка часовых поясов включена, Django хранит DATETIME информации в формате UTC в базе данных, использует часовой пояс, знают DateTime объектов внутри, и переводит их в часовом пояс конечного пользователя в шаблоны и формы.

также, если вы не используете PostgreSQL:

Другие движки магазин DateTimes без указания часового пояса. Если вы переключитесь с USE_TZ = False на USE_TZ = True, вы должны преобразовать свои данные с локального времени в UTC - что не является детерминированным, если у вашего местного время имеет DST.

Bascially это не полностью сделано для вас, просто быть настройки USE_TZ в settings.py

+0

Я использую Postgres и мои настройки «USE_TZ = True», так Джанго настроен для часовых поясов (в противном случае сериализованных даты в описании будет не имеет суффикса "+00: 00". –

+0

Я думаю, что нет проблем с хранилищем, потому что я могу воспроизвести ошибку для правильных данных, отклоняющих ее формат через DATETIME_INPUT_FORMATS. –

Смежные вопросы