我遇到了一个非常复杂的情况,因此我将提供一个简化版本,其中仅包含与我的问题有关的信息:
我有一个People
表和一个Pets
表,其中有一个名为Owner
. 一个人可以养多只宠物。我需要根据他们的宠物搜索人员表。用户指定诸如“获取所有没有任何名为 Philip 的宠物的人”之类的内容。我正在做的是使用一个Q
对象作为过滤器(只搜索没有该名称的宠物),然后循环获取所有者。问题是,如果一个人有两只宠物,一只叫菲利普,一只叫约吉尼亚,主人仍然会出现。
最好的方法是什么。请注意,我需要一个可以轻松处理请求的解决方案,例如:
“让所有没有任何宠物叫菲利普并且没有任何宠物贵宾犬的人。”
“让所有没有宠物叫菲利普或有宠物叫贾斯珀的人”
“让所有没有宠物叫菲利普的人,或者有一只叫贾斯珀的宠物和一只叫安德鲁的宠物”
我能想到笨拙和低效的解决方案,但没有好的解决方案。