大佬教程收集整理的这篇文章主要介绍了django rest 中的外键和序列化程序,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
class PatIEnt(models.Model):
user = models.OnetoOneFIEld(User,related_name='patIEnt',on_delete=models.CASCADE)
ID_type = models.CharFIEld(max_length=300)
ID_number = models.CharFIEld(max_length=300)
creation_date = models.DateFIEld(default=datetiR_98_11845@e.date.today)
class AllergIE(models.Model):
name = models.CharFIEld(max_length=300,default="X")
class PatIEntAllergIEs(models.Model):
patIEnt = models.ForeignKey(PatIEnt,related_name="patIEnt_allergIEs",on_delete=models.CASCADE)
allergIE = models.ForeignKey(AllergIE,on_delete=models.CASCADE,null=TruE)
professional_contract = models.ForeignKey(ProfessionalContract,null=True,on_delete=models.CASCADE)
是否可以使用包含所有过敏症列表的属性(包括这些模型的姓名和 ID)来检索患者的反对意见?
您将 PatientAllergies 作为一个链, 所以
patientAllergies = PatientAllergies.objects.get(patient.id_number='0000')
patientAllergies.allergie #you get the single allergie model connect with it,take care it is a ForeignKey so it is singolar and not many
patientAlleriges.patient.user #will give you access to all the data of the user
,
您可以像这样使用 prefetch_related
和 Prefetch
实现此目的:
Patient.objects.prefetch_related(
Prefetch('patient_allergies__allergie',to_attr='allergies')
)
EDIT:刚刚了解到 to_attr
不适用于多级预取。我能想到的另一种方法是使用 Patient
的模型属性返回其相关的过敏症,如下所示:
class Patient(models.Model):
@property
def allergies(self):
return Allergie.objects.filter(patientallergies_set__patient=self)
然后在您的序列化程序中,allergies
字段可以使用 Allergies
序列化程序
以上是大佬教程为你收集整理的django rest 中的外键和序列化程序全部内容,希望文章能够帮你解决django rest 中的外键和序列化程序所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。