如何最好地为预订应用程序创建连接?
How to best create connections for a booking app?
我是来自 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 return 'is_doctor' 或 'is_secretary' 显示不同的内容吗?
我很困惑如何将用户模型与医生或秘书模型连接起来,例如,或者我什至需要这样做,因为他们都是用户...
我如何在注册时区分用户(医生、秘书、患者)?例如,他们每个人都有不同的注册表,其中包含 is_doctor、is_secretary?
的布尔值
我想不出存储预约的解决方案。我想知道我是否应该创建一个新模型 Bookings 来保存预订,但我不确定这个预订模型是否应该保存每一个预订(从任何病人到任何医生),考虑到这个应用程序将被很多人使用人。还是应该按每位患者和每位医生进行预约?
在这种情况下,秘书还可以手动将预约添加到医生日历并添加患者。
我正在一个应用程序中构建所有这些,clinic
,也许建议为此创建不同的应用程序?
每位医生都需要有自己的日历才能使用此应用程序,例如 'day 12, blocks of 20mins from 09:00 to 11:30'。我应该创建一个日历模型吗?或者如何最好地实现这一目标?如何最好地提出这个模型?该日历将根据每位医生选择的空闲时间来填充时间块。
首先,我是一个django小白,所以请记住阅读以下内容。
看起来不错 - 我唯一看不到的是你如何 link 病人去诊所和/或医生。
我注意到的另一件事是医生如何拥有多个诊所。我假设每个诊所都有自己的日历,而不是医生本身?或者两者兼而有之?即,即使一位医生在他的日历上有空,他可能在诊所没有房间给病人,因为其他医生的日历会与之冲突。
就个人而言,我不会为诊所创建新的应用程序,除非您想对其进行更详细的建模。最初保持简单。
此外,如果您允许医生、秘书和患者登录您的网站,最好使用自定义用户的 consumer/provider class 模型。想法...
我会开始用更抽象的术语来思考这个问题。 Service/provider/consumer.
但是,我认为您的方向是正确的。
我可以提出一些想法。
Models
我认为您的方向是正确的。您只需将模型 Doctor
、Secretary
和 Patient
关联到 User
模型。我建议您创建一个继承自 AbstractUser
的自定义用户模型。
在此模型中,您可以为每种类型的用户添加一个带有选项的选择字段。 link to docs
此外,您需要 link 使用正确模型的用户模型。
- 一种方法是在所有用户类型模型中为用户模型设置一个
OneToOneField
:Doctor
、Secretary
、Patient
- 或者您可以探索泛型关系。它将为您进一步简化事情。 link to docs.
Signup
您可以在注册时为用户 select 提供一个字段,或者提供单独的 link 以在后端进行注册和处理。类似于 If you are a doctor, click here to signup
。在这两种情况下,您都需要覆盖注册过程。
所以注册 link 可以看起来像:/signup/doctor/
或 /signup/patient/
。所有注册都将使用相同的视图,只是不同的 url kwargs。 link to docs
您可以在表单成功时为用户类型的相关模型创建行。
Booking
是的,您需要创建一个单独的模型,您可以将所有预订存储在该模型中。有多少用户使用您的应用程序并不重要。只需使用一个好的数据库解决方案,比如 Postgres。有一些方法可以优化您的查询,例如索引,暂时不用担心。只需确保保存所有引用,如患者、医生、创建、上次修改、由哪个用户创建、from_datetime、to_datetime 等
最好处理 forms.py
中的 20 分钟预约时段。
您可以创建一个可接受的时间段列表,这样如果将来您想将这个时间更改为 30 分钟,这很容易做到。只需在表单级别处理所有验证,它就可以解决问题。
我是来自 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 return 'is_doctor' 或 'is_secretary' 显示不同的内容吗?
我很困惑如何将用户模型与医生或秘书模型连接起来,例如,或者我什至需要这样做,因为他们都是用户...
我如何在注册时区分用户(医生、秘书、患者)?例如,他们每个人都有不同的注册表,其中包含 is_doctor、is_secretary?
的布尔值我想不出存储预约的解决方案。我想知道我是否应该创建一个新模型 Bookings 来保存预订,但我不确定这个预订模型是否应该保存每一个预订(从任何病人到任何医生),考虑到这个应用程序将被很多人使用人。还是应该按每位患者和每位医生进行预约?
在这种情况下,秘书还可以手动将预约添加到医生日历并添加患者。
我正在一个应用程序中构建所有这些,
clinic
,也许建议为此创建不同的应用程序?每位医生都需要有自己的日历才能使用此应用程序,例如 'day 12, blocks of 20mins from 09:00 to 11:30'。我应该创建一个日历模型吗?或者如何最好地实现这一目标?如何最好地提出这个模型?该日历将根据每位医生选择的空闲时间来填充时间块。
首先,我是一个django小白,所以请记住阅读以下内容。
看起来不错 - 我唯一看不到的是你如何 link 病人去诊所和/或医生。
我注意到的另一件事是医生如何拥有多个诊所。我假设每个诊所都有自己的日历,而不是医生本身?或者两者兼而有之?即,即使一位医生在他的日历上有空,他可能在诊所没有房间给病人,因为其他医生的日历会与之冲突。
就个人而言,我不会为诊所创建新的应用程序,除非您想对其进行更详细的建模。最初保持简单。
此外,如果您允许医生、秘书和患者登录您的网站,最好使用自定义用户的 consumer/provider class 模型。想法...
我会开始用更抽象的术语来思考这个问题。 Service/provider/consumer.
但是,我认为您的方向是正确的。
我可以提出一些想法。
Models
我认为您的方向是正确的。您只需将模型 Doctor
、Secretary
和 Patient
关联到 User
模型。我建议您创建一个继承自 AbstractUser
的自定义用户模型。
在此模型中,您可以为每种类型的用户添加一个带有选项的选择字段。 link to docs
此外,您需要 link 使用正确模型的用户模型。
- 一种方法是在所有用户类型模型中为用户模型设置一个
OneToOneField
:Doctor
、Secretary
、Patient
- 或者您可以探索泛型关系。它将为您进一步简化事情。 link to docs.
Signup
您可以在注册时为用户 select 提供一个字段,或者提供单独的 link 以在后端进行注册和处理。类似于 If you are a doctor, click here to signup
。在这两种情况下,您都需要覆盖注册过程。
所以注册 link 可以看起来像:/signup/doctor/
或 /signup/patient/
。所有注册都将使用相同的视图,只是不同的 url kwargs。 link to docs
您可以在表单成功时为用户类型的相关模型创建行。
Booking
是的,您需要创建一个单独的模型,您可以将所有预订存储在该模型中。有多少用户使用您的应用程序并不重要。只需使用一个好的数据库解决方案,比如 Postgres。有一些方法可以优化您的查询,例如索引,暂时不用担心。只需确保保存所有引用,如患者、医生、创建、上次修改、由哪个用户创建、from_datetime、to_datetime 等
最好处理 forms.py
中的 20 分钟预约时段。
您可以创建一个可接受的时间段列表,这样如果将来您想将这个时间更改为 30 分钟,这很容易做到。只需在表单级别处理所有验证,它就可以解决问题。