如何在不使用值或 values_list 的情况下从另一个 QuerySet 有效地获取模型的 QuerySet

How can I get efficiently QuerySet of a Model from another QuerySet without using values or values_list

我有 Visit 模型和 Patient 模型

class Visit(models.Model):
    patient = model.ForeignKey(Patient)
    # other fields

class Patient(models.Model):
    # other fields

我有这样的访问的查询集

visits = Visit.objects.filter(#conditions)

如何在不使用值或 values_list 的情况下从访问 QuerySet 中有效地获取 Patient 实例的 QuerySet。即

patients_ids = visits.values_list("Patient__id", flat=True).distinct()
patients = Patient.objects.filter(id__in=patients_ids)

有点难以理解您的要求,但我认为这可能是您想要的:

visits = Visit.objects.filter(name=somename, count=something)

要获得与您对应的患者:

patients = Patient.objects.filter(visit__name=somename, visit__count=something).distinct()

解释:

Patient 模型默认获得一个向后的多对一引用,称为另一个模型的小写字母(在本例中为 visit)。然后,您可以使用双下划线功能 __ 查询该关系,并进行与 Visit 过滤器中相同的测试。

Source