我有如下设置的Django模型。
class Person:
first_name
last_name
# More_fields
class Service1:
person(fk=Person)
# Service1_specific_fields
class Service2:
person(fk=Person)
# Service2_specific_fields
class Service3:
person(fk=Person)
# Service3_specific_fields
# More_services
我正在尝试创建一个“高级搜索”视图,该视图允许用户使用复选框查询Person模型,以查找具有与选中框匹配的服务的记录。
E.g。如果选中服务1,2和3的复选框,则结果应该只包含具有所有三种服务的人员。
目前,它设置为从所有3个服务获取所有对象并将它们相互比较。正如所料,这非常缓慢。
对此有什么更好的方法?
答案 0 :(得分:0)
怎么样:
( Person
.objects
.filter( service1__pk__isnull = False )
.filter( service2__pk__isnull = False )
. and so on
)
您可以使用Q()仅合并已检查的条件。