Django 从三个表中检索数据
Posted
技术标签:
【中文标题】Django 从三个表中检索数据【英文标题】:Django retrieve data from three tables 【发布时间】:2020-07-28 17:49:38 【问题描述】:问题
我正在使用 django 最新版本。我有三个这样命名的表模型
Class MCH():
Name= models.CharField()
Class Staff():
Name=models.CharField()
Mch=models.ForeignKey(MCH,,on_delete=models.CASCADE)
location=models.CharField(..)
Class Patients():
Name=models.CharField()
Staff=models.ForeingKey(Staff,on_delete=models.CASCADE)
Phone=models.CharField()
我想使用 Django 方法加入树表并通过MCH
过滤数据
我试过了
ServedPatients=Patients.objects. select_related(Staff__MCH='mch1')
【问题讨论】:
【参考方案1】:您可以通过以下方式获取数据:
ServedPatients = Patients.objects.select_related('Staff', 'Staff_Mch')
或者如果你想过滤MCH
的名字,你可以用:
ServedPatients = Patients.objects.filter(<b>Staff__Mch__Name='mch1'</b>)
在这里,您可以获得具有 Staff
的 Patients
对象和名称为 'mch1'
的 Mch
。但是,在这里您不会将 Staff
和 Mch
的数据添加到关系中,您可以将两者结合:
ServedPatients = Patients.objects.select_related(
'Staff', 'Staff_Mch'
).filter(Staff__Mch__Name='mch1')
注意:通常Django模型中的字段名是用snake_case写的,而不是PerlCase,所以应该是:@ 987654331@ 而不是
。Staff
注意:通常 Django 模型被赋予一个单数名称,所以
Patient
而不是。Patients
【讨论】:
以上是关于Django 从三个表中检索数据的主要内容,如果未能解决你的问题,请参考以下文章