【问题标题】:Django retrieve data from three tablesDjango 从三个表中检索数据
【发布时间】: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')

【问题讨论】:

    标签: python django python-3.x sqlite django-models


    【解决方案1】:

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

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

    或者如果你想过滤MCH的名字,你可以用:

    ServedPatients = Patients.objects.filter(<b>Staff__Mch__Name='mch1'</b>)

    在这里,您可以获得具有 StaffPatients 对象和名称为 'mch1'Mch。但是,在这里您不会将 StaffMch 的数据添加到关系中,您可以将两者结合:

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

    注意:通常Django模型中的字段名是用snake_case写的,而不是PerlCase,所以应该是:@ 987654331@ 而不是 Staff

     

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 2013-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多