django - 使用 Django REST 框架获取预约预约的可用时间段
问题描述
我正在尝试开发一个 API 来安排几个沙龙的约会。
现在我有模型和序列化器用于Salon
和Appointment
. 所有约会可以有不同的持续时间。该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
解决方案
推荐阅读
- vba - 在 VB.Net 中创建一个对象以在 VBA 中使用
- python - pandas 定位单行标签并将结果转换为数据框
- python - 仅获取数据框中每个主题的第一行
- azure-functions - 在特定日期和时间运行的 Azure 函数
- c++ - 分段错误:在 DrawElementsCall 上出现 11
- java - 如何在 Recyclerview 适配器类中调用主要活动方法
- javascript - 创建具有多个基本 url 的 Javascript API 类
- node.js - 如何知道是否存在一个名为“A”的顶点,其中包含数据?
- mongodb - 如何制作 sum(field)-sum(field2) 并获得所有文档的单个结果
- javascript - 如何检查是否在php中检查了span od xheckbox?