Как я управляю заказами в парикмахерской на основе продолжительности обслуживания в Django

Я должен управлять бронированиями в парикмахерской в течение дня на основе продолжительности обслуживания. Например:

  • стрижка: 30 минут
  • стрижка + шампунь: 40 минут

В салоне есть несколько парикмахеров. На данный момент я разработал модели парикмахерской и услуг, но я не знаю, как реализовать назначение встреч и их отображение для доступных временных интервалов.


class Barber(models.Model):
    name = models.CharField(max_length=255)
    surname = models.CharField(max_length=255)
    role = models.CharField(max_length=255)

    def __str__(self):
        return self.name + ' ' + self.surname

class Service(models.Model):
    name = models.CharField(max_length=255)
    duration = models.PositiveIntegerField()
    price = models.FloatField()
    info = models.TextField(blank=True, null=True)

    def __str__(self):
        return self.name

Модель назначения я думал реализовать таким образом:

class Appointment(models.Model):
    barber = models.ForeignKey(Barber, on_delete=models.CASCADE, related_name='appointments')
    service = models.ForeignKey(Service, on_delete=models.CASCADE, related_name='appointments')
    start_date = models.DateTimeField()
    name_client = models.CharField(max_length=255)
    client_email = models.EmailField()
    number_phone_client = models.CharField(max_length=10)

    def end_date(self):
        return self.start_date + timedelta(minutes=self.service.duration)

Но теперь я не знаю, как управлять различными слотами, доступными в возможном представлении, основанном на услуге и выбранном парикмахере.

каждая встреча может иметь много услуг, например, стрижка + шампунь поэтому вы должны установить отношение между назначением и услугой в одно число. Это означает, что любая встреча может иметь много услуг

Вернуться на верх