使用查询集进行字段查找

0 投票
1 回答
671 浏览
提问于 2025-04-17 12:14

大家好,我花了一个多小时在这个问题上,真是搞不懂。

简单来说,我有三个模型,A、B、C,它们之间通过外键连接在一起。

b = B.objects.filter(resident=request.user)
c = C.objects.filter(todays_treatment=medication,patient=b)

但是,c 只给我返回了查询 b 中第一个对象的结果。我知道这是因为 b 返回的是一个查询集,但我不明白我应该怎么用它?我怎么才能让 c 返回查询 b 中所有对象的结果?你们通常是怎么“跟踪”外键关系的?我试过 select_related() 这个函数,但它没有达到我想要的效果。请帮帮我!!

1 个回答

4

你可能在寻找 __in 这个语法:

c = C.objects.filter(todays_treatment=medication, patient__in=b)

这个语法可以用来获取所有的 C 对象,前提是这些对象的患者在 b 这个查询集中,假设 B 对象就是 C.patient 指向的对象。

撰写回答