0

Hi I want service old book sale service for university student

I create ItemPost model and when user post their books, ItemPost's deadline saved in 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

I want compare item's deadline, timezone.now()

and return True or False

but I can't if I command item.is_ended_semester

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

how can i solved this problem?

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

timezone.now()
> datetime.datetime(2017, 7, 14, 8, 50, 57, 91304, tzinfo=<UTC>)
Jade Han
  • 1,185
  • 5
  • 15
  • 36
  • 2
    Possible duplicate of [Can't compare naive and aware datetime.now() <= challenge.datetime\_end](https://stackoverflow.com/questions/15307623/cant-compare-naive-and-aware-datetime-now-challenge-datetime-end) – Laur Ivan Jul 14 '17 at 08:58
  • @LaurIvan oh,,,, I'll try this solution thank you – Jade Han Jul 14 '17 at 08:59

1 Answers1

0

I solved my problem, using 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)
Jade Han
  • 1,185
  • 5
  • 15
  • 36