如何使用钟摆作为Django的基准日期时间库?

2024-10-01 05:00:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用pendulum作为Django的基本datetime库。因此,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的基准日期时间库?你知道吗

附言

我认为docs代码片段有问题,value看起来出乎意料,但我不认为这是问题的原因。你知道吗


Tags: 对象djangoimportselfdatetimedatereturnvalue