Django筛选多个数组列表值

时间:2018-10-11 18:52:06

标签: python django

我必须根据3个字段进行过滤:DoctorClientBranch。他们每个人都是一个ID数组,所以我想按这些ID进行过滤。

我的django查看代码:

my_dict = {
    'BranchId': [0,1,2,4],
    'DoctorId': [2,4,5],
    'ClientId': [2,3,5],
}

Branches = my_dict['BranchId']
Doctors = my_dict['DoctorId']
Clients = my_dict['ClientId']

query = Event.objects.all().filter(
    e_d__in=Doctors,
    e_b__in=Branches,
    e_c__in=Clients)
print(query) 

1 个答案:

答案 0 :(得分:0)

我不完全了解您的问题是什么,但是我将尽力解释查询的概念。

如果在查询集中使用field lookup __in,则字段值必须是您提供的列表中存在的值之一。

这是代码的简化版本(它具有相同的功能,但具有更多的显式名称和更少的代码行)。

my_dict = {
    'branch_id_list': [0, 1, 2, 4],
    'doctor_id_list': [2, 4, 5],
    'client_id_list': [2, 3, 5],
}
query = Event.objects.filter(
    e_d__in=my_dict['branch_id_list'],
    e_b__in=my_dict['doctor_id_list'],
    e_c__in=my_dict['client_id_list'])
print(query)

此代码期望您的模型Event具有3个字段e_ae_be_c;它们中的每一个都必须是IntegerField(或类似的东西,其基本类型为int)。

查询将返回满足3个条件的所有Event实例;也就是说,这3个字段中的每个字段都必须具有相应列表中的值。

这能回答您的问题吗?