Как сгенерировать объект aware time в Faker?
У меня есть следующая (упрощенная) модель и завод:
models.py
class Event():
duration = FloatField()
start_time = TimeField()
finish_time = DateTimeField()
def save(self, *args, **kwargs):
self.finish_time = self.start_time + timedelta(hours=self.duration)
event_factory.py
from factory import Faker
class EventFactory:
date = Faker(
"date_time_this_month",
before_now=False,
after_now=True,
tzinfo=timezone.get_current_timezone(),
)
start_time = Faker("time_object")
duration = Faker("random_int")
Однако, мой метод save
поднимает Warning: DateTimeField Event.finish_time received a naive datetime (2022-03-28 12:43:38) while time zone support is active.
date
известно благодаря аргументу tzinfo
, но start_time
наивно (я проверил с помощью timezone.is_aware()
от django), потому что провайдеры времени в Faker, похоже, не допускают никаких параметров временных зон.
Есть предложение по получению поддельного объекта осознания времени в factory-boy/Faker?
Попробуйте использовать объекты FuzzyDateTime, они возвращают объект с учетом часового пояса: https://factoryboy.readthedocs.io/en/stable/fuzzy.html?highlight=timezone