Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 预约调度器的数据库设计_Django_Database_Web Applications_Calendar - Fatal编程技术网

Django 预约调度器的数据库设计

Django 预约调度器的数据库设计,django,database,web-applications,calendar,Django,Database,Web Applications,Calendar,我想构建一个基于web的约会计划程序。目前我正在使用Django,但我认为这是一个普遍的问题。比如说有老师和学生。还有一个日历,上面有一个1小时的时间段。每个老师都可以指定他们可以使用的时间段。学生可以为老师预定时间 在视图方面,学生可以首先选择一名教师,然后显示该教师的完整日历及其可用性,就像Calendly一样 对于教师和学生,我觉得我可以有一个用户表和一列来指示用户是教师还是学生 问题是我应该如何设计预约表。我目前的想法是创建一个表,其中每一行都是一个单独的时间段,该时间段具有开始时间和日

我想构建一个基于web的约会计划程序。目前我正在使用Django,但我认为这是一个普遍的问题。比如说有老师和学生。还有一个日历,上面有一个1小时的时间段。每个老师都可以指定他们可以使用的时间段。学生可以为老师预定时间

在视图方面,学生可以首先选择一名教师,然后显示该教师的完整日历及其可用性,就像Calendly一样

对于教师和学生,我觉得我可以有一个用户表和一列来指示用户是教师还是学生

问题是我应该如何设计预约表。我目前的想法是创建一个表,其中每一行都是一个单独的时间段,该时间段具有开始时间和日期、教师id以及可选的学生id。如果学生id为null,则表示教师的时间段可用


这是一个好方法吗?

是的,它看起来是一个很好的设计。不要忘记声明一个惟一的together约束以避免重复。此外,在时间段上,学生应该可以为空,以允许学生加入免费时间段。这是:

老师: id pk 名称 学生: id pk 名称 时隙: id pk 教师id不为空,fk到教师 学生id可为空!重要,fk对学生 日期螺母空 启动时间螺母为空 约束唯一在一起!重要提示:教师id、日期、开始时间。 在django上,您可以将其声明为多对多

从django.db导入模型 班级学生模型。模型: 名称=型号。CharFieldmax_长度=128 定义自身: 返回self.name 类教师模型。模型: 名称=型号。CharFieldmax_长度=128 slots=models.ManyToManyFieldStudent,通过class='TimeSlot' 定义自身: 返回self.name 类TimeSlotmodels。模型: 学生=models.ForeignKey 大学生 空白=正确!重要的 空=真!重要的 on_delete=models.SET_NULL teacher=models.ForeignKeyTeacher,on_delete=models.CASCADE 日期=models.DateField 开始时间=小时数。整数字段最大长度=64 类元: 约束=[ 模型。唯一约束!重要 字段=[“教师”、“日期”、“开始时间”], name='unique one teacher by slot' ]
这可能是一个愚蠢的问题,但为什么我们需要slots=models.ManyToManyFieldStudent,通过class='TimeSlot',这只是一个建议。没有它也可以工作。阅读链接文档。如果我为学生和教师使用一个表,比如说用户,并且表中有“type”字段指示用户是学生还是教师,则时间段学生和教师字段都有用户作为外键。那么我如何约束student.type==student和teacher.type==teacher?似乎model.Q只适用于当前表中的字段。还是让学生和老师有单独的桌子比较好?这不是一个好主意,因为学生和老师没有相同的关系。但您可以从用户表继承这两个表。