Django 外键选择

问题描述

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

这是代码

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,editable=True)
    insuranceSyndicate  = models.CharField(choices = INSURANCE_SYNDICATE,default="")
    slug = models.SlugField(max_length = 50,default= '')
    referencedDoctor = models.ForeignKey(DoctorModel,on_delete=models.Set_Null)

我想要的是,当患者选择“referencedDoctor”时,他会从 DoctorModel 中的“doctorName”中选择他

我该怎么做?

解决方法

你应该为你的模型创建 __ 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。会更容易实施。

,

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

class DoctorModel(models.Model):
    user = models.OneToOneField(CustomUser,default="")



    def__str__(self):
        return self.doctorName