1

我想使用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突然出现,但我认为这不是问题的原因。

4

0 回答 0