Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Django中的复选框中筛选多个值?_Django_Orm - Fatal编程技术网

如何从Django中的复选框中筛选多个值?

如何从Django中的复选框中筛选多个值?,django,orm,Django,Orm,我有一个病人模型,涉及领域:公司、性、是否还活着 在“患者搜索”页面中,我有这些字段的复选框。所以,如果用户想搜索一家公司中所有男性患者。。。他们将在复选框上打勾 然后在后端,在views.py中,我收集复选框的值并将其放入名为“value_list”的列表中。接下来,我按如下方式执行查询搜索: patient_list = Patient.objects.all() if "abc" in value_list: company = Company.objects.get(n

我有一个病人模型,涉及领域:公司、性、是否还活着

在“患者搜索”页面中,我有这些字段的复选框。所以,如果用户想搜索一家公司中所有男性患者。。。他们将在复选框上打勾

然后在后端,在views.py中,我收集复选框的值并将其放入名为“value_list”的列表中。接下来,我按如下方式执行查询搜索:

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)))

谢谢你,卡莱布!我感谢你的帮助!