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

时间:2016-02-23 22:28:52

标签: python django django-models django-queryset django-orm

我有访问模型和患者模型

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

class Patient(models.Model):
    # other fields

我有像这样的访问的QuerySet

visits = Visit.objects.filter(#conditions)

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

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

1 个答案:

答案 0 :(得分:0)

理解您的问题有点困难,但我认为这可能是您想要的:

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

为了让病人对应你所做的事情:

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

说明:

默认情况下,Patient模型会获得一个倒向的多对一引用,称为另一个模型的小写(在这种情况下为visit)。然后,您可以使用双下划线功能__查询该关系,并执行您在Visit过滤器中要执行的相同测试。

Source