【发布时间】:2021-01-07 01:55:11
【问题描述】:
我是来自 Firebase 世界的 Django 和关系数据库的新手。我无法确定医患预约应用程序的最佳建模方式,以及一般而言关系型 DBS 的最佳工作方式;我想通过现在做得很好来尽量减少未来的问题。我将在后端使用 Django 和 Django Rest Framework 来提供 React 前端。
到目前为止,我已经在 clinic 应用程序中创建了这些模型。 Patients 和 Secretaries 将成为用户的一部分,Doctors 也是如此。然后我为 API 创建序列化程序和视图集。
class Clinic(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
accepted = models.BooleanField(default=False)
class Doctor(models.Model):
clinic = models.ManyToManyField(
Clinic, related_name="doctor")
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
email = models.EmailField(max_length=240, default="email")
appointment_duration = models.IntegerField(default=20)
class Secretary(models.Model):
clinic = models.ForeignKey(
Clinic, on_delete=models.CASCADE, related_name="secretary")
name = models.CharField(max_length=200)
email = models.EmailField(max_length=240, default="email")
doctors_responsible_for = models.ManyToManyField(Doctor)
class Patient(models.Model):
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
email = models.EmailField(max_length=240, default="email")
date_of_birth = models.DateField()
age = models.PositiveIntegerField(default=0)
- 是否应该创建一个用户模型来区分用户(医生、秘书和患者)?他们都将能够注册和登录,并且每个人都会在页面上看到不同的内容。我是否应该从序列化程序 API 返回“is_doctor”或“is_secretary”并从那里显示不同的内容?
例如,我很困惑如何将用户模型与医生或秘书模型连接起来,或者我什至需要这样做,因为他们都是用户......
-
在注册时如何区分用户(医生、秘书、患者)?例如,他们每个人都有一个不同的注册表单,其中 is_doctor, is_secretary 是布尔值?
-
我想不出存储预约的解决方案。我想知道我是否应该创建一个新模型 Bookings 来保存预订,但我不确定这个预订模型是否应该保存每个预订(从任何患者到任何医生),考虑到这个应用程序将被很多人使用的人。还是应该按每位患者和每位医生进行预约?
在这种情况下,秘书还可以手动将预约添加到医生日历并添加患者。
-
我正在一个应用程序中构建所有这些,
clinic,也许建议为此创建不同的应用程序? -
每位医生都需要有自己的日历才能运行此应用,例如“第 12 天,从 09:00 到 11:30,每 20 分钟一次”。我应该创建一个日历模型吗?或者如何最好地实现这一目标?如何最好地提出这个模型?该日历将填充每个医生选择的可用时间段。
【问题讨论】:
-
您可能不想要
default="email",因为这实际上会将电子邮件地址设置为email,并且在创建时会导致表单验证错误,或者在您尝试编辑条目时肯定会导致错误(当您实际上没有明确设置email值时,即)。 -
好提示。删除了。
标签: django database django-models django-rest-framework orm