Как использовать маятник в качестве базовой библиотеки datetime с Django? - PullRequest
1 голос
/ 26 октября 2019

Я хотел бы использовать маятник в качестве базовой библиотеки даты и времени с 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 появляется неожиданно, но я не думаю, что это является причиной проблемы.

...