我想建立一个基于网络的约会安排程序。目前我正在使用Django,但我认为这是一个一般性的问题。说有老师和学生。还有一个日历,上面有一堆1小时的时隙。每个教师都可以指定哪些时间段是可用的。学生可以预约老师的时间。
在视图方面,学生可以首先选择教师,然后显示该教师的完整日历和他们的可用性,就像Calendly一样。
对于教师和学生,我觉得我可以有一个用户表,并有一个列表明用户是教师还是学生。
问题是我应该如何设计一个用于约会的表格。我目前的想法是创建一个表,其中每一行都是一个单独的时隙,其中包含开始时间和日期、教师id以及可选的学生id。如果学生id为空,则表示教师的时间段可用。
这是一个好的方法吗?
发布于 2021-02-24 15:26:47
是的,它看起来是一个很好的设计。别忘了声明一个unique together约束来避免dups。此外,在TimeSlot上,学生应该可以为空,以允许学生加入免费的timeSlot。这就是它:
在django上,您可以将其声明为多对多relationships with extra fields
from django.db import models
class Student(models.Model):
name = models.CharField(max_length=128)
def __str__(self):
return self.name
class Teacher(models.Model):
name = models.CharField(max_length=128)
slots = models.ManyToManyField(Student, through='TimeSlot')
def __str__(self):
return self.name
class TimeSlot(models.Model):
student = models.ForeignKey(
Student,
blank = True, #!Important
null =True, #!Important
on_delete=models.SET_NULL)
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE)
date = models.DateField()
starting_hour = models.IntegerField(max_length=64)
class Meta:
constraints = [
models.UniqueConstraint( #!Important
fields=['teacher', 'date', 'starting_hour'],
name='unique one teacher by slot')
]https://stackoverflow.com/questions/66345886
复制相似问题