2

저는 장고와 새 로프의 끝에 매우 익숙하며 도움이 필요합니다.클래스 기반 뷰 MySQL DateTimeField는 순진한 날짜 시간을 받았습니다

"클래스 기반보기"를 사용하고 MySQL 데이터베이스의 들어오는 datetime 필드를 시간대 지원 항목으로 변경하는 방법을 모르겠습니다. 데이터베이스는 그것을 UTC로 저장하고 시스템은 PST에 있습니다. 시간대 지원이 내 MonthArchiveView, DayArchiveView, DateDetailView의에

활성화되어있는 동안

DateTimeField는 순진 날짜 (2012년 9월 1일 0시 0분 0초)을받은 :

는이 오류를 얻고있다 만. 어떤 이유로 인해 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') 

내보기 중 하나입니다 :

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

누군가가 나에게하는 방법을 이해하는 데 도움이 : 여기

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' 

는 예를 들어 템플릿입니다 여기

내 모델입니다 내 세부보기를 수정하여 클래스 기반보기로 유지하고 다른 것들을 파악할 수 있습니다. 나는 심지어 PYTZ를 사용하려했지만 클래스 기반 뷰를 사용하는 방법을 변경하는 방법을 충분히 이해하지 못했습니다. 감사합니다 ....

답변

2

문제는보기에 있지만 날짜가 데이터베이스에 표준 시간대 정보없이 저장되는 반면 장고는 시간대를 지원하도록 설정되어 있습니다. 시간대 지원이 필요하지 않은 경우에는 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의 모든 것이 이것이 옵션이 아니며 다른 DB 프로그램을 사용할 수 없다고 말합니다. 그래서 데이터를 DB에서 가져온 다음 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를 인식하게한다고 추측합니다. 나는로드 tz 등이 문서가 말하는 방식으로 작동하지 않기 때문에 여전히 내 문제를 해결할 대답이 없다. –

관련 문제