如何在不使用值或 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
过滤器中相同的测试。
我有 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
过滤器中相同的测试。