【问题标题】:How can I get efficiently QuerySet of a Model from another QuerySet without using values or values_list如何在不使用 values 或 values_list 的情况下从另一个 QuerySet 有效地获取模型的 QuerySet
【发布时间】:2016-06-05 23:57:11
【问题描述】:

我有访问模型和患者模型

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

class Patient(models.Model):
    # other fields

我有这样的访问查询集

visits = Visit.objects.filter(#conditions)

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

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

【问题讨论】:

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


    【解决方案1】:

    有点难以理解你在问什么,但我认为这可能是你想要的:

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

    要获得与您对应的患者,您会这样做:

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

    解释:

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

    Source

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-11
      • 2019-10-21
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 2016-09-05
      • 2014-01-13
      相关资源
      最近更新 更多