Как Вы программно переупорядочиваете детей подкласса ATFolder?

Django не дает никаких гарантий относительно того, каким будет часовой пояс ваших datetime в коде Python. Это потому, что 1) часовые пояса в основном имеют отношение к взаимодействию с пользователем (именно поэтому activate() влияет на формы и шаблоны) и 2) операции сравнения Python учитывают часовой пояс, поэтому конкретный часовой пояс не влияет на результат.

Конечно, одна операция, которая не учитывает часовой пояс, - это извлечение времени из даты и времени и сравнение его с другим временем. Поэтому вы должны вручную преобразовать дату и время в правильный часовой пояс. У вас была правильная идея, но replace() это неправильный способ сделать это. (Вместо того, чтобы просто преобразовать в другой часовой пояс, он изменяет фактический момент времени.)

Вместо этого сделайте следующее:

from django.utils.timezone import localtime

if localtime(instance.date_time).time() < instance.interval.from_time:
    pass
6
задан Cody Brimhall 25 October 2008 в 23:41
поделиться

1 ответ

Самое быстрое решение: подкласс от ATFolder вместо BaseFolder. Это дает Вам все "нормальное" переупорядочение и другие общие plone возможности папки (который я подозреваю, что Вы также хотите).

Если Вы хотите быть более выборочными, изучите Products/ATContentTypes/content/base.py: ATCTOrderedFolder и OrderedBaseFolder.

4
ответ дан 17 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: