Django получить данные из трех таблиц - PullRequest
2 голосов
/ 15 апреля 2020

Вопрос

Я использую 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 Ответ

2 голосов
/ 15 апреля 2020

Вы можете получить данные с помощью:

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

или, если вы хотите отфильтровать по имени MCH, вы можете отфильтровать с помощью:

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

Здесь вы получить Patients объекты, которые имеют Staff и Mch с именем 'mch1'. Здесь вы, однако, не будете добавлять данные Staff и Mch к отношениям, вы можете объединить их с помощью:

ServedPatients = Patients.objects.select_related(
    <b>'Staff', 'Staff_Mch'</b>
).filter(<b>Staff__Mch__Name='mch1'</b>)

Примечание : обычно имена полей в Django модели записываются в snake_case , а не PerlCase , поэтому должно быть: staff вместо Staff.

Примечание : обычно модели Django присваивается имя единственного числа , поэтому Patient вместо Patients.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...