python - 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')
解决方案
您可以通过以下方式获取数据:
ServedPatients = Patients.objects.select_related('Staff', 'Staff_Mch')
或者,如果您想过滤 的名称MCH
,您可以使用以下方式过滤:
ServedPatients = Patients.objects.filter(Staff__Mch__Name='mch1')
在这里,您可以获得具有 as an的Patients
对象,具有 as name 。但是,在这里您不会将 和 的数据添加到关系中,您可以将两者结合起来:Staff
Mch
'mch1'
Staff
Mch
ServedPatients = Patients.objects.select_related(
'Staff', 'Staff_Mch'
).filter(Staff__Mch__Name='mch1')
注意:通常 Django 模型中的字段名称是用 snake_case 编写的,而不是PerlCase,所以它应该是:
staff
而不是.Staff
注意:通常 Django 模型被赋予一个单数名称,所以
Patient
而不是.Patients
推荐阅读
- java - mysql-binlog-connector-java - 在二进制日志索引文件中找不到第一个日志文件名
- java - IBM AppScan 的验证要求问题
- openssl - 根 CA 证书和中间 CA 证书
- docker - 使用 docker 和 docker-compose 构建的工作流程是什么?
- javascript - 在 webpack + react 中使用 sass-loader 出现多个错误
- java - Reactor 调度程序实施注意事项
- javascript - 将 HTML 对象添加到事件 javascript/meteor
- c# - 找不到方法 Microsoft.Owin.Security.Notifications.MessageReceivedNotification
- c++ - C++调用另一个子类的公共方法
- python - TesseractError: (-1073741819, u'') 使用 pytesseract 时