2

我对 Django 很陌生,并且在我的绳索尽头,真的需要一些帮助。

我不知道如何使用“基于类的视图”并将传入的日期时间字段从我的 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,但不太了解如何更改基于类的视图以使用它。谢谢....

4

1 回答 1

2

问题不在于视图,而在于日期存储在没有时区信息的数据库中,而 Django 设置为支持时区。如果不需要时区支持,只需USE_TZ = False在 settings.py 中设置即可;如果这样做,请确保数据库将日期与时区信息一起存储。更多细节可以在https://docs.djangoproject.com/en/1.4/topics/i18n/timezones/#naive-and-aware-datetime-objects找到

于 2012-10-04T07:21:52.000 回答