2016-09-23 3 views
0

В настоящее время я пытаюсь создать сайт сети здравоохранения в Django. Идея заключается в том, что в моем приложении регистрации будет существовать класс User. Одно из состояний, хранящихся внутри Пользователя, - это больница, в которую зарегистрирован пользователь.Возможно ли иметь класс как поле модели в Django?

Я создал другую больницу в приложении регистрации. Я хочу, чтобы пользователь моделировал больницу как одно из полей модели для состояния 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 Друзья

+0

Просто используйте внешний ключ. – JRodDynamite

+0

Вау, хорошо, спасибо большое –

ответ

0

Я бы посоветовал вам прочитать этот материал 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.