Я хотел бы использовать маятник в качестве базовой библиотеки даты и времени с Django. Таким образом, DateTimeField
должен работать с pendulum
объектами, а не datetime
объектами.
Я следовал примеру на странице документов маятника и создал специальное поле:
import pendulum
from django.db.models import DateTimeField as BaseDateTimeField
class DateTimeField(BaseDateTimeField):
def value_to_string(self, obj):
val = self.value_from_object(obj)
if isinstance(value, pendulum.DateTime):
return value.format('YYYY-MM-DD HH:mm:ss')
return '' if val is None else val.isoformat()
... и использовал его в моем models.py
:
class Task(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
done = models.BooleanField()
due_date = BaseDateTimeField()
def is_today(self):
return self.due_date.in_timezone('utc').date() == pendulum.today('utc').date()
... однако я получаю сообщение об ошибке:
'datetime.datetime' object has no attribute 'in_timezone'
... что, очевидно, означает, что Django все еще обрабатывает due_date
как datetime
объект, а не pendulum
объект.
Есть ли возможность переключения на использование маятника в качестве базовой библиотеки времени и даты с Django?
PS
Я думаю, что с этим фрагментом документа что-то не так, value
появляется неожиданно, но я не думаю, что это является причиной проблемы.