2

我對Django很新,在我的繩索末端,真的需要一些幫助。基於類查看MySQL DateTimeField收到一個天真的日期時間

我不知道如何使用「基於類的視圖」,並將來自我的MySQL數據庫的傳入日期時間字段更改爲它似乎需要的時區支持條目。數據庫以UTC格式存儲它,而我的系統在PST上。

我收到此錯誤:

DateTimeField字段收到一個天真的日期時間(2012-09-01: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,但不太瞭解如何改變基於類的視圖來使用它。謝謝....

回答

2

問題不在視圖中,但事實上日期存儲在數據庫中沒有時區信息,而Django設置爲支持時區。如果您不需要時區支持,只需在settings.py中設置USE_TZ = False;如果這樣做,請確保數據庫使用時區信息存儲日期。關於這方面的更多細節可以在https://docs.djangoproject.com/en/1.4/topics/i18n/timezones/#naive-and-aware-datetime-objects

+0

對不起,我應該說我知道問題在於MySQL沒有用TZ數據存儲日期。 DateTimeField不,我不知道如何解決這個問題。 MySQL中的所有內容都表示這不是一種選擇,我不能使用任何其他數據庫程序。因此,我需要在將數據從數據庫中提取出來之後,將數據注意到TZ信息,然後將其注入到視圖中,以便顯示正確的細節並擺脫錯誤。或者我需要另一個選項來解決錯誤。 –

+0

我明白了。也許這個答案可能會指向你正確的方向:http://stackoverflow.com/questions/10034823/django-converting-old-datetime-field-to-new-1-4-datetime-with-time-zone-aware -in –

+0

感謝您提供這些信息,但我已經看到了模板組件並嘗試了它們,但它們沒有多大幫助。但是這個信息確實解釋了,我猜它一旦將它從MySQL中拉出,它就已經使DateTimeField知道了。我仍然沒有解決我的問題的答案,因爲load tz等不適用於文檔的說明。 –

相關問題