是否可以将 class 作为 Django 中的模型字段?

Is it possible to have a class as your model field in Django?

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

我在注册应用程序中创建了另一家医院。我想将该模型 Hospital 用作 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,
    )

谢谢 Whosebug 好友

我建议您阅读此 material 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