【问题标题】:Is it possible to have a class as your model field in Django?是否可以在 Django 中将类作为模型字段?
【发布时间】:2017-02-01 09:47:14
【问题描述】:

我目前正在尝试在 Django 中创建一个健康网络网站。 这个想法是在我的注册应用程序中会有一个名为 User 的类。存储在 User 内部的状态之一是用户注册的医院。

我在注册应用中创建了另一家医院。我想将该模型医院用作 hospital_used 状态的模型字段之一。我怎么做?下面是我的 UML 的一部分,说明了这种关系
UML Diagram

Below is a portion of my UML that illustrates the relationship png

这是我到目前为止的代码。用星号封装的代码是我需要帮助的。

class Hospital(models.Model):
    hospital_Name = models.CharField(max_length=150)

    def __str__(self):
        return "Hospital Name: " + str(self.hospital_Name)


class User(models.Model):
    PATIENT = 'Pat'
    DOCTOR = 'Doc'
    NURSE = 'Nurse'
    ADMINISTRATOR = 'Admin'
    user_type_choice = {
        (PATIENT, 'Patient'),
        (DOCTOR, 'Doctor'),
        (NURSE, 'Nurse'),
        (ADMINISTRATOR, 'Administrator'),
    }

    name = models.CharField(max_length=50)
    dob = models.DateField(auto_now=False)
    username = models.CharField(max_length=50)
    *preferred_hospital = Hospital(models.CharField(max_length=50))*
    patient_type = models.CharField(
        max_length=5,
        choices=user_type_choice,
    )

谢谢 StackOverflow 好友

【问题讨论】:

  • 只需使用外键。
  • 哇,好的,非常感谢

标签: django model field


【解决方案1】:

我建议您阅读此材料on tutorials,了解如何创建简单模型。

你在这里想要的是使用 ForeignKey 方法。

name = models.CharField(max_length=50)
dob = models.DateField(auto_now=False)
username = models.CharField(max_length=50)
preferred_hospital = models.ForeignKey(Hospital, on_delete = models.CASCADE)
patient_type = models.CharField(
    max_length=5,
    choices=user_type_choice,
)

您不必使用on_delete = models.CASCADE,但最好自己处理删除医院时应该发生的情况。

知道您还可以拥有 OneToOne、ManyToOne 或 ManyToMany 字段,这些字段均描述为 here

【讨论】:

    猜你喜欢
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多