我必须根据3个字段进行过滤:Doctor
,Client
和Branch
。他们每个人都是一个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)
答案 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_a
,e_b
和e_c
;它们中的每一个都必须是IntegerField
(或类似的东西,其基本类型为int
)。
查询将返回满足3个条件的所有Event
实例;也就是说,这3个字段中的每个字段都必须具有相应列表中的值。
这能回答您的问题吗?