2

私はDjangoを初めて使用し、ロープの終わりにいて、本当に助けが必要です。

「クラスベースのビュー」を使用して、MySQL データベースから受信した datetimefield を、必要と思われる Time Zone Supported エントリに変更する方法がわかりません。データベースはそれを 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')

これが私の見解の1つです:

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 %}

Day Detail View を修正して Class Based View のままにしておく方法を誰かが理解してくれるのでしょうか。私も 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 に答える