Я в тупике. У меня есть три модели, определенные в Peewee Thusly:Несколько соединений в peewee
class Patient(BaseModel):
patientIdx = IntegerField()
gender = CharField()
firstName = CharField()
middleInit = CharField()
lastName = CharField()
provider = ForeignKeyField(User)
MRN = CharField()
class Meta:
database = database
class Metrics(BaseModel):
metricId = CharField()
metricDescription = CharField()
ptListDescription = CharField()
class Meta:
database = database
class PatientMetric(BaseModel):
metric = ForeignKeyField(Metrics)
patient = ForeignKeyField(Patient)
class Meta:
database = database
Я пытаюсь выразить этот запрос с использованием MYSQL PeeWee:
select m.metricId, p.id from
patient as p
join patientmetric pm on p.id = pm.patient_id
join metrics m on pm.metric_id = m.id
where provider_id = 91
В принципе, просто дать мне список пациентов и идентификатор их показатели для данного поставщика. Довольно просто, но я не могу понять, как заставить peewee сделать это. Я попытался связать соединения, но peewee не может разрешить внешние ключи. Я попытался с помощью .join несколько различных способов, и .from_ метода, например:
Metrics.select()
.from_(
PatientMetric.select().join(Patient).where(Patient.provider == provider),
Metrics)
.where(Metrics.id == PatientMetric.metric)
В этом случае, MySql жаловалась, что псевдоним для производной таблицы, необходимой для создания. Я думаю, что я лаю неправильное дерево, и есть простой способ построить этот запрос в peewee, но я в тупике. Может ли кто-нибудь показать мне «правильный» способ?