我怎么能比较timezone.now和item.deadline

问题描述:

您好我想服务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()

+0

@LaurIvan哦,,,,我会试试这个解决方案谢谢 –

我解决我的问题,使用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)