首页 > 解决方案 > Django 从三个表中检索数据

问题描述

问题

我正在使用 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')

标签: pythondjangopython-3.xsqlitedjango-models

解决方案


您可以通过以下方式获取数据:

ServedPatients = Patients.objects.select_related('Staff', 'Staff_Mch')

或者,如果您想过滤 的名称MCH,您可以使用以下方式过滤:

ServedPatients = Patients.objects.filter(Staff__Mch__Name='mch1')

在这里,您可以获得具有 as an的Patients对象,具有 as name 。但是,在这里您不会将 和 的数据添加到关系中,您可以将两者结合起来:StaffMch'mch1'StaffMch

ServedPatients = Patients.objects.select_related(
    'Staff', 'Staff_Mch'
).filter(Staff__Mch__Name='mch1')

注意:通常 Django 模型中的字段名称是用 snake_case 编写的而不是PerlCase,所以它应该是:staff而不是Staff.

 

注意:通常 Django 模型被赋予一个单数名称,所以Patient而不是Patients.


推荐阅读