【问题标题】:dealing with foreign keys in Django在 Django 中处理外键
【发布时间】:2021-12-09 19:58:55
【问题描述】:

我正在创建一个医生预约系统,我也确实包含了处方

class Prescription(models.Model):
    id = models.UUIDField(default=uuid.uuid4, primary_key=True, editable=False)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    doctor = models.ForeignKey(Doctor, null = True, on_delete=models.SET_NULL)
    clinic = models.ForeignKey(Clinic, on_delete=models.SET_NULL)

我在想如果医生出于某种原因删除了他的帐户怎么办,如果发生这种情况,医生或诊所可以设置为 null 吗?

【问题讨论】:

  • 这是你的选择。
  • 感谢您的回答,但可以接受将医生或诊所设置为空的处方吗?
  • 我想是的。如果我是你,我会创建一个名为 display name 的新字段并输入医生的姓名,这样当医生删除他或她的帐户时,处方仍然有他或她的姓名。
  • 这会造成一些冗余,但我认为这是唯一的选择,谢谢你回答我
  • 你的问题解决了吗?

标签: python django django-models database-design


【解决方案1】:

您可以在您的 models.py 中添加 doctor_nameclinic_name 字段:

class Prescription(models.Model):
    id = models.UUIDField(default=uuid.uuid4, primary_key=True, editable=False)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    doctor = models.ForeignKey(Doctor, null = True, on_delete=models.SET_NULL)
    clinic = models.ForeignKey(Clinic, on_delete=models.SET_NULL)

    doctor_name = models.CharField(max_length=100, blank=False)
    clinic_name = models.CharField(max_length=100, blank=False)

并且每次添加医生姓名和诊所名称。但是,这是非常多余的......

实际上,这里是 stackoverflow 的数据库模式 -> url.
如您所见,有OwnerDisplayName,所以帖子仍然有作者姓名。

【讨论】:

    猜你喜欢
    • 2021-07-12
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 2014-09-17
    相关资源
    最近更新 更多