假设我有一个位置列表,其中每个位置都有一些对象的列表。我想确保我得到这些位置,但是要有一个经过过滤的对象列表。在
这是模型.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
下面是我如何进行筛选:
^{pr2}$问题是,通过使用这种过滤方法,我在每个位置得到一个对象列表,其中至少有一个对象满足locations.filter()
中的条件。这不是我真正需要的。我需要排除不满足filter()
方法中条件的所有对象(我是说LocationObject
)。在
有什么办法吗?在
更新。一点澄清
以下是该列表的外观:
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)
假设您确实希望这些位置至少有一个对象满足这两个条件,则可以执行以下操作:
但由于您不确定是否同时具有这两个参数,因此无法做到这一点。但是,您可以使用
^{pr2}$Q
对象来实现它:如果我没有错,你想要的是
exclude()
。在filter()
用于筛选出所需的所有对象。所以你可以使用:locations = locations.filter(objects_list__size__gte=request_square_from)
这将提供满足此条件的所有对象。在
但如果要排除匹配查询。您需要使用
exclude()
locations = locations.exclude(objects_list__size__gte=request_square_from)
这将为您提供不满足条件的对象,并返回其余对象。在
根据您的更新,您需要一个位置对象列表,而不是位置,因此,与其过滤位置,不如过滤位置对象!在
您的没有限制过滤外键,您可以过滤任何模型实例。在
如果在这之后,你想要任何物体的位置,你只要。。。在
^{pr2}$相关问题 更多 >
编程相关推荐