Теперь я читаю книгу «Django by Example».Django get_object_or_404() с DateTimeField
У меня проблема при поиске записи с параметрами.
Мои коды, как показано ниже:
settings.py
TIME_ZONE = 'Asia/Seoul'
models.py
...
published = models.DateTimeField(default=timezone.now)
...
views.py
def post_show(request, year, month, day, slug):
post = get_object_or_404(Post,
slug=slug,
status='published',
published__year=year,
published__month=month,
published__day=day)
return render(request, 'blog/default/post/show.html', {'post': post})
urls.py
url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$',
views.post_show, name='post_show'),
MVT работает нормально, но я считаю, что что-то не так с DateTimeField, TimeZone или SQLite3.
В SQLite3 «опубликовано» DateTimeField имеет значение: «2016-05-17 19:57:03», которое является временем UTC. Я в Азии/Сеуле опережает 9 часов. поэтому я фактически опубликовал его в 4:57 18 мая.
>>> p = get_object_or_404(Post,slug='test', published__year=2016, published__month=5, published__day=18)
>>> p.title
'test'
>>> p.published
datetime.datetime(2016, 5, 17, 19, 57, 3, tzinfo=<UTC>)
DB говорит, что опубликовано 17-го числа, но мне нужно передать параметр «18». Если я прохожу 17, это будет 404.
Как я могу заставить фильтр использовать UTC часовой пояс?