2017-07-14 31 views
0

您好我想服務old book sale service for university student我怎麼能比較timezone.now和item.deadline

創建ItemPost模型,當用戶發佈他們的書,ItemPost的期限保存在deadline

from django.db import models 
from django.conf import settings 
from django.utils import timezone 


def localtime(): 
    return timezone.localtime(timezone.now()) 


class ItemPost(models.Model): 


    title = models.TextField(
     ) 

    created_at = models.DateTimeField(
     default=localtime 
     ) 

    is_deleted = models.BooleanField(
     default=False, 
     verbose_name="삭제된 포스트", 
     ) 

    # 마감날짜를 구하는 함수 
    def deadline_def(self): 
     year_of_item_created = self.created_at.year 

     if self.created_at.month <= 6: 
      return timezone.datetime(year_of_item_created, 6, 30) 
     else: 
      return timezone.datetime(year_of_item_created, 12, 31) 

    deadline = property(deadline_def) 

    # 등록된 학기가 끝난 포스트인지 확인 
    def is_ended_semester_def(self): 
     now = timezone.now() 
     if now > self.deadline: 
      return True 
     return False 

    is_ended_semester = property(is_ended_semester_def) 

    def __str__(self): 
     return self.title 

我想比較項目的截止日期,timezone.now()

,並返回真或假

但我可以,如果我命令不item.is_ended_semester

TypeError: can't compare offset-naive and offset-aware datetimes

我怎樣才能解決這個問題呢?

item.deadline 
> datetime.datetime(2017, 6, 30, 0, 0) 

timezone.now() 
> datetime.datetime(2017, 7, 14, 8, 50, 57, 91304, tzinfo=<UTC>) 
+2

的可能的複製[無法比擬的天真和了解datetime.now()<= challenge.datetime \ _end(https://開頭計算器.com/questions/15307623/cant-compare-naive-and-aware-datetime-now-challenge-datetime-end) –

+0

@LaurIvan哦,,,,我會試試這個解決方案謝謝 –

回答

0

我解決我的問題,使用timezone.utc

# 마감날짜를 구하는 함수 
def deadline_def(self): 
    year_of_item_created = self.created_at.year 

    if self.created_at.month <= 6: 
     return timezone.datetime(year_of_item_created, 6, 30, tzinfo=timezone.utc) 
    else: 
     return timezone.datetime(year_of_item_created, 12, 31, tzinfo=timezone.utc) 
相關問題