Задать вопрос
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами

Наиболее эффективный алгоритм резервирования?

Есть, скажем - модели следующего вида:

class Car(models.Model):
        vin = models.Charfield(max_length=64)


class Order(models.Model):
       car = models.ForeignKey(Car)
       start_date = models.DatetimeField()
       end_date = models.DatetimeField()

В модели Order - start_date и end_date - это номера начала и конца брони.
Авто очень много и заказов очень много. У одного авто может быть уже несколько бронирований в разные непересекающиеся промежутки времени.
Я задаю start_date и end_date - каким образом наиболее эффективно можно сделать выборку свободных авто на данный период?
  • Вопрос задан
  • 111 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
@TelepnevDmitriy
Senior Web Developer
start_date и end_date - в daterange + индекс
либо повешать функциональный индекс (daterange(start_date, end_date))
select * from car_orders where start_end_range && daterange('2018-01-01', '2018-01-02')
Ответ написан
netpastor
@netpastor
Python developer
Начни с нахождения свободного авто на конкретный момент времени
Типа
Car.objects.exclude(Q(order__end_date__gte=datetime.now())&Q(order__start_date__lte=datetime.now()))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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