【问题标题】:Django Foreign Key choicesDjango 外键选择
【发布时间】:2021-06-02 09:12:32
【问题描述】:

我想构建一个应用程序,让患者将他的报告上传给他的同伴医生, 所以,我有两种模型,一种用于医生,另一种用于患者。 我想要的是在两个模型之间建立一个关系,一个病人从注册医生中选择他的医生。

这是代码:

class DoctorModel(models.Model):
    user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
    doctorName = models.CharField(max_length = 150 , default="")
    doctorEmail = models.EmailField(max_length=50, default="")
    speciality  = models.CharField(choices = SPECIALITY ,max_length = 20 , default="")
    doctorStatus  = models.CharField(choices = DOCTOR_STATUS ,max_length = 15 , default="")


class PatientModel(models.Model):
    user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
    patientName = models.CharField(max_length = 150 , default="", editable=True)
    patientAge = models.IntegerField(default=0)
    patientEmail = models.EmailField(max_length=50, default="", editable=True)
    insuranceSyndicate  = models.CharField(choices = INSURANCE_SYNDICATE, max_length = 15, default="")
    slug = models.SlugField(max_length = 50 , default= '')
    referencedDoctor = models.ForeignKey(DoctorModel, on_delete=models.Set_Null)

我希望当患者选择“referencedDoctor”时,他从 DoctorModel 中的“doctorName”中选择他

我该怎么做?

【问题讨论】:

    标签: django django-models foreign-keys


    【解决方案1】:

    你应该为你的模型创建 __ str __ 方法。

    class DoctorModel(models.Model):
        user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
        doctorName = models.CharField(max_length = 150 , default="")
        doctorEmail = models.EmailField(max_length=50, default="")
        speciality  = models.CharField(choices = SPECIALITY ,max_length = 20 , default="")
        doctorStatus  = models.CharField(choices = DOCTOR_STATUS ,max_length = 15 , default="")
    
        def __str__(self):
            return f"{self.doctorName}"
    

    顺便说一句,尝试对您的字段使用 null=True。会更容易实现。

    【讨论】:

      【解决方案2】:

      你可以像这样在 Doctor 模型中定义一个 dunder 字符串函数

      class DoctorModel(models.Model):
          user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
          doctorName = models.CharField(max_length = 150 , default="")
          doctorEmail = models.EmailField(max_length=50, default="")
          speciality  = models.CharField(choices = SPECIALITY ,max_length = 20 , default="")
          doctorStatus  = models.CharField(choices = DOCTOR_STATUS ,max_length = 15 , default="")
      
      
      
          def__str__(self):
              return self.doctorName
      

      【讨论】:

        猜你喜欢
        • 2015-09-24
        • 2014-03-15
        • 1970-01-01
        • 1970-01-01
        • 2021-09-03
        • 1970-01-01
        • 2020-01-10
        • 2017-06-08
        • 1970-01-01
        相关资源
        最近更新 更多