Я создаю 20 случайных объектов для своих приборов следующим образом:
EVENT_TYPE = [
'A',
'B',
'C',
]
for _ in range(20):
start_date = get_random_date(date(date.today().year, 1, 1), now())
Event.objects.create(
category=random.choice(EVENT_TYPE),
start=start_date,
end=get_random_date(start_date, start_date + timedelta(days=180)),
)
Что я хочу сделать: иметь 20 объектов с «уникальными» диапазонами дат. Например, Object1 начинается 01.01.2019 и заканчивается 10.01.2019 и имеет EVENT_TYPE
«A». Поэтому ни у одного другого созданного объекта не должно быть диапазона дат между этими двумя датами с одинаковым EVENT_TYPE
. У них может быть начальная дата в 10.01.2019 или конечная дата в 01.01.2019, но между этими датами никогда ничего не должно быть.
НО, как вы можете видеть, у моих объектов также есть категории, которые разделяют их, поэтому, если obj1 и obj2 имеют одинаковый диапазон дат, но разные EVENT_TYPE
, это совершенно нормально.
Прямо сейчасмой код делает это совершенно случайно. Я пытался найти способ достичь этого, но просто не смог придумать умную идею. Кто-нибудь знает умное решение этой проблемы? Как я могу проверить, находится ли один объект между диапазоном дат другого, и, скажем, просто изменить его дату на начало или конец этого объекта, чтобы он точно не перекрывался?
Спасибо за любой ответ! :)