我想使用pendulum作为 Django 的基础日期时间库。因此, aDateTimeField
应该与pendulum
对象一起工作,而不是datetime
对象。
我在 pendulum 的文档页面上遵循了一个示例并创建了一个特殊字段:
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'
...这显然意味着 Djangodue_date
仍然将其视为datetime
对象,而不是pendulum
对象。
是否有可能切换到使用 pendulum 作为 Django 的基本日期时间库?
附言
我认为该文档片段有问题,value
突然出现,但我认为这不是问题的原因。