假设我有一个位置列表,其中每个位置都有一些对象的列表。我想确保我得到这些位置,但有一个过滤的对象列表。
这是models.py的结构:
class Location(models.Models):
# fields
class LocationObject(models.Models):
location = models.ForeignKey(Location, related_name="objects_list")
# other fields that are used in filtering
这是我进行过滤的方法:
locations = Location.objects.all()
if request_square_from:
locations = locations.filter(objects_list__size__gte=request_square_from)
if request_square_to:
locations = locations.filter(objects_list__size__lte=request_square_to)
# Other filters ...
问题是,通过使用这种过滤方法,我在每个位置都获得了一个对象列表,其中至少有一个对象满足locations.filter(). 这不是我真正需要的。我需要排除每个LocationObject不满足filter()方法中条件的对象(我的意思是 )。
有什么想法吗?
更新。一点澄清
此列表的外观如下:
Location #1
- Object 1 (size=40)
- Object 2 (size=45)
- Object 3 (size=30)
Location #2
- Object 4 (size=20)
- Object 5 (size=25)
我想通过 size 属性过滤每个位置对象。假设这个条件:Location.objects.filter(objects_list__size__gte=40)。这将匹配仅包含具有此属性的单个列表条目的位置。这不是我需要的。预期结果应该是:
Location #1:
- Object 1 (size=40)
- Object 2 (size=45)
慕尼黑的夜晚无繁华
qq_遁去的一_1
慕仙森
相关分类