![](/img/trans.png)
[英]How to add the appointment data from Angular Scheduler app to a local database?
[英]DB design for appointment scheduler
我想構建一個基於 Web 的約會計划程序。 目前我正在使用 Django 但我認為這是一個普遍的問題。 假設有老師和學生。 還有一個帶有一堆 1 小時時間段的日歷。 每個教師都可以指定他們可用的時間段。 學生可以預訂老師的時間段。
在視圖方面,學生可以首先 select 一位老師,然后顯示該老師的完整日歷及其可用性,就像 Calendly 一樣。
對於教師和學生,我覺得我可以有一個用戶表,並有一個列指示用戶是教師還是學生。
問題是我應該如何設計約會表。 我目前的想法是創建一個表,其中每一行是一個單獨的時隙,它具有開始時間和日期、教師 ID 和可選的學生 ID。 如果學生id是null,則表示老師的時間段是可用的。
這是一個好方法嗎?
是的,它看起來是一個不錯的設計。 不要忘記聲明一個unique together
約束以避免重復。 此外,在 TimeSlot 上,學生應該可以為空,以允許學生加入空閑 timeSlot。 這里是:
在 django 上,您可以將其聲明為帶有額外字段的多對多關系
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')
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.