首页 > 解决方案 > 使用 Django REST 框架获取预约预约的可用时间段

问题描述

我正在尝试开发一个 API 来安排几个沙龙的约会。

现在我有模型和序列化器用于SalonAppointment. 所有约会可以有不同的持续时间。该Appointment模型如下所示:

    class Appointment(models.Model):
        date = models.DateField()
        start_time = models.TimeField()
        end_time = models.TimeField()

        salon = models.ForeignKey(Salon, on_delete=models.CASCADE)

如何退回给定日期的所有沙龙及其可用时间段(当时没有预约)。因此,假设沙龙在 10:00-16:00 开放,并且在 11:00-11:30 只有一个预约,我们会得到如下信息:

{
    "id": 3,
    "name": "My Salon",
    "city": "London",

    "time_slots": [
        {
            "date": "2019-12-01",
            "start_time": "10:00:00",
            "end_time": "11:00:00",
        },
        {
            "date": "2019-12-01",
            "start_time": "11:30:00",
            "end_time": "16:00:00",
        }
    ]
}

现在我能想到的唯一方法是添加一个TimeSlot带有外键的新模型Salon并将所有时间段保存在数据库中并在预约后更改它们?但是,这似乎不是很有效。

有没有更好的方法来计算和返回时隙?

编辑

序列化器:

class AppointmentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Appointment
        fields = ('id', 'date', 'start_time', 'end_time', 'salon')

class SalonSerializer(serializers.ModelSerializer):
    appointment_set = AppointmentSerializer(many=True, read_only=True)

    class Meta:
        model = Salon
        fields = ('id', 'name', 'city', 'appointment_set')
        depth = 1

标签: djangodjango-rest-framework

解决方案


推荐阅读