Rrooom
@Rrooom

Как работать с датами в Django?

Как-то постоянно натыкаюсь на ошибки с датами. Особенно с js-виджетами, которые хотят по-своему их форматировать.

Есть ли материал, который объясняет, как избежать ошибок?
Две претензии - то что регулярно ломается с ошибкой - "не указан таймзон" (временно отключил его проверку в настройках).
Вторая - это то, что питон и js по разному форматируют даты, еще эти ***** локализованные форматы, в каком формате гарантированно всё будет хорошо?
Как фильтровать по дате? Нам хорошо бы знать точный datetime записей, но конечному пользователю хватит по дням. Из-за этого не красивое форматирование для дат - 00:00:00 - часть со временем.

В общем, помогите разобраться - в официальной документации вообще нет примеров об этом скопище граблей.
  • Вопрос задан
  • 11955 просмотров
Пригласить эксперта
Ответы на вопрос 3
Kademn
@Kademn
Злой
Не совсем понятна проблема. Во view вы формируете данные используя возможности python, затем в каком угодно порядке и формате вы отдаете их в шаблон. В шаблоне вы можете представить datetime в удобном для вас виде, например.
<td>{{ item.date_in|date:"j E Y" }}</td>

Так что "неудобный формат для пользователя" определяете вы сами, а обработку JavaScript'ом будете делать на основе того, как подаете данные в шаблоне.
Посмотрите здесь
+
В каком бы виде вы не передавали данные в форму, вы можете сами переопределить валидацию данных для формы.
Подробнее тут
Ответ написан
Gasoid
@Gasoid
Сложность только с таймзон да.
В остальном ее нету, если у вас просто date,
создаете форму с полем DateField
date = forms.DateField()

русский формат дат отлично валидируется, т.е. стандартный jquery ui datepicker ставит 08.09.2014, этот формат известен django forms
if forms.valid():
    date = forms.cleaned_data['date']
   # в date уже правильный для питона Date объект
   # дальше фильтруем по дате, например объявления, которые позже даты
   ads = Ad.objects.filter(date__gt=date)

# все есть в документации языка запросов
Ответ написан
qmax
@qmax
программер
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы