基于类的视图MySQL DateTimeField收到了一个天真的日期时间

时间:2012-10-03 03:25:37

标签: django datetime django-models django-views django-class-based-views

我是Django的新手,在我的绳索结束时真的需要一些帮助。

我不知道如何使用“基于类的视图”并将传入的datetimefield从我的MySQL数据库更改为它似乎需要的时区支持条目。数据库以UTC格式存储,我的系统在PST上。

我收到此错误:

当时区支持处于活动状态时,DateTimeField收到了一个天真的日期时间(2012-09-01 00:00:00)

在我的MonthArchiveView,DayArchiveView,DateDetailView上。出于某种原因,我的ArchiveIndexView,基于YearArchiveView类的视图工作正常。

这是我的模特:

class blogpost(models.Model):
  blog_title = models.CharField(max_length=200)
  blog_slug = models.SlugField(unique_for_date='blog_pub_date', max_length=200)
  blog_content = models.TextField()
  blog_pub_date = models.DateTimeField(default=datetime.now())
  blog_category = models.ForeignKey('blogcategory')

以下是我的观点之一:

class ThoughtsDetailView(DateDetailView):
  template_name='thoughts/thoughts_detail.html'
  queryset = blogpost.objects.all()
  date_field = 'blog_pub_date'
  slug_field = 'blog_slug'
  context_object_name = 'thoughts_detail'
  month_format = '%m'
  allow_future = 'true'

以下是一个示例模板:

{% block content-inner-left %}
<h1>{{ thoughts_detail.blog_title }}</h1>
<div id="blogpost">
  <p class="blogsmalldate">[ Posted on {{ thoughts_detail.blog_pub_date|date:"l, F dS, Y" }}, {{ thoughts_detail.blog_pub_time|date:"g:i a" }} ]</p>
  <br />
  <p>{{ thoughts_detail.blog_content|safe|linebreaks }}</p>
</div>
{% endblock content-inner-left %}

有人可以帮助我了解如何修复我的日期详细信息视图,使其保持基于类的视图,然后我可以找出其他视图。我甚至尝试使用PYTZ,但是不了解如何更改基于类的视图以使用它。谢谢....

1 个答案:

答案 0 :(得分:2)

问题不在视图中,而是在没有时区信息的情况下将日期存储在数据库中,而Django设置为支持时区。如果您不需要时区支持,只需在settings.py中设置USE_TZ = False;如果这样做,请确保数据库存储带有时区信息的日期。有关详细信息,请访问https://docs.djangoproject.com/en/1.4/topics/i18n/timezones/#naive-and-aware-datetime-objects