Django objects.get __day возвращает неверную дату

Я очень плохо знаком с Django и до сих пор работал над большинством своих проблем. Я думаю, что проблема с TimeZone и UTC, но, честно говоря, я понятия не имею, как решить эту проблему.

Я строю блог и пытаюсь запросить определенный день, чтобы показать сообщения. Моя проблема в том, что я продолжаю получать значения на следующий день. Я даже заметил, что вижу, что месяц не работает из-за дня. Вот мои данные и пример.

У меня есть 5 сообщений в моей базе данных. Когда я ищу 9/4, я получаю данные 9/3. Данные 9/3 возвращаются 9/2 и т. Д. Поэтому, когда я ищу Все сообщения в сентябре, я также включаю 8/31.

Любая помощь будет принята с благодарностью. Пожалуйста, также объясните, почему у меня возникла эта проблема.

Название блога Дата публикации

Test BlogPost 5 Sept. 3, 2012, 5:26 p.m. 
Test BlogPost 4 Sept. 3, 2012, 5:22 p.m.
Test BlogPost 3 Sept. 2, 2012, 7:09 p.m.
Test BlogPost 2 Sept. 1, 2012, 5:29 p.m.
Test BlogPost   Sept. 1, 2012, 5:26 p.m.
Test BlogPost 0 Aug. 31, 2012, 8:18 p.m.
Test BlogPost 00    Aug. 29, 2012, 8:19 p.m.

models.py

from django.db import models
from django.template.defaultfilters import slugify
import datetime
class BlogPost(models.Model):
  blog_title = models.CharField(max_length=200)
  blog_slug = models.SlugField(unique_for_date='blog_pub_date', help_text='Automatically built from the title.', max_length=200)
  blog_content = models.TextField()
  blog_pub_date = models.DateTimeField('Date published')
  def __unicode__(self):
    return '%s' % self.blog_title
  class Meta:
    ordering = ["-blog_pub_date"]

urls.py

url(r'^blog/(?P<year>\d{4})/$', 'dev_website.views.blog_view_post_year', name='blog_view_post_year'),
url(r'^blog/(?P<year>\d{4})/(?P<month>\d{1,2})/$', 'dev_website.views.blog_view_post_month', name='blog_view_post_month'),
url(r'^blog/(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})/$', 'dev_website.views.blog_view_post_day', name='blog_view_post_day'),
url(r'^blog/(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})/(?P<slug>[0-9A-Za-z-]+)/$', 'dev_website.views.blog_view_post_detail', name='blog_view_post_detail'),

views.py

def blog_index(request):
  latest_blogpost_list = BlogPost.objects.all().order_by('-blog_pub_date')[:7]
  return render(request, 'blog_index.html', {'latest_blogpost_list': latest_blogpost_list})
def blog_view_post_year(request, year):
  latest_blogpost_list = BlogPost.objects.filter(blog_pub_date__year=int(year)).order_by('-blog_pub_date')[:7]
  return render(request, 'blog_index.html', {'latest_blogpost_list': latest_blogpost_list})
def blog_view_post_month(request, year, month):
  latest_blogpost_list = BlogPost.objects.filter(blog_pub_date__month=int(month)).order_by('-blog_pub_date')[:7]
  return render(request, 'blog_index.html', {'latest_blogpost_list': latest_blogpost_list})
def blog_view_post_day(request, year, month, day):
  latest_blogpost_list = BlogPost.objects.filter(blog_pub_date__day=int(day)).order_by('-blog_pub_date')[:7]
  return render(request, 'blog_index.html', {'latest_blogpost_list': latest_blogpost_list})
def blog_view_post_detail(request, year, month, day, slug):
  #  blogpost_detail = BlogPost.objects.get(blog_pub_date__year=int(year), blog_pub_date__month=int(month), blog_pub_date__day=int(day), blog_slug=slug)
  #  blogpost_detail = BlogPost.objects.get(blog_pub_date__year=int(year), blog_pub_date__month=int(month), blog_slug=slug)
  blogpost_detail = BlogPost.objects.get(blog_pub_date__day=day)
  return render(request, 'blog_view_post.html', {'blogpost': blogpost_detail})

HTML-код

<h2>BLOG</h2>
{% if latest_blogpost_list %}
  {% for blogpost in latest_blogpost_list %}
    <h3><a href="blog/{{ blogpost.blog_pub_date|date:"Y/m/d" }}/{{ blogpost.blog_slug }}/">{{ blogpost.blog_title }}</a></h3>
    <p>[ {{ blogpost.blog_pub_date }} ]</p>
    <hr>
    <p>{{ blogpost.blog_content }}</p>
    <br />
  {% endfor %}
{% else %}
  <p>No Blog posts are available.</p>
{% endif %}

0 ответов

Другие вопросы по тегам