如何从Django中的复选框中筛选多个值?
我有一个病人模型,涉及领域:公司、性、是否还活着 在“患者搜索”页面中,我有这些字段的复选框。所以,如果用户想搜索一家公司中所有男性患者。。。他们将在复选框上打勾 然后在后端,在views.py中,我收集复选框的值并将其放入名为“value_list”的列表中。接下来,我按如下方式执行查询搜索:如何从Django中的复选框中筛选多个值?,django,orm,Django,Orm,我有一个病人模型,涉及领域:公司、性、是否还活着 在“患者搜索”页面中,我有这些字段的复选框。所以,如果用户想搜索一家公司中所有男性患者。。。他们将在复选框上打勾 然后在后端,在views.py中,我收集复选框的值并将其放入名为“value_list”的列表中。接下来,我按如下方式执行查询搜索: patient_list = Patient.objects.all() if "abc" in value_list: company = Company.objects.get(n
patient_list = Patient.objects.all()
if "abc" in value_list:
company = Company.objects.get(name="abc")
patient_list = patient_list.filter(Q(company=company))
if "alive" in value_list:
patient_list = patient_list.filter(Q(is_alive=True))
if "male" in value_list:
patient_list = patient_list.filter(Q(sex=MALE))
我的问题是,这种过滤方式是否有效且良好
请告知
多谢各位 就性能而言,一切看起来都不错。您将使用此代码执行1个查询,因为Django非常聪明,能够将这些查询组合成一个使用多个子查询的大型查询 也就是说,您可以使用
\u in
子句大大简化这一点,它只是多个或条件的简写:
Patient.objects.filter(company__in=Company.objects.filter(name__in=values_list)))
谢谢你,卡莱布!我感谢你的帮助!