筛选具有相同相关实体的实体

时间:2019-08-21 19:23:30

标签: django django-models django-queryset

我想构建一个查询集,以查找具有相同属性的球。存在2个模型:

| id | name     |
+----+----------+
|  1 | Neptun   |
|  2 | Speedy   |
|  3 | Highway  |

BallAttribute

| id | ball_id | key      | value |
+----+--------------------+-------+
|  1 |       1 | color    | blue  | ←
|  2 |       1 | size     | xxl   | ←
|  3 |       2 | color    | blue  |
|  4 |       2 | size     | xl    |
|  5 |       3 | color    | blue  | ←
|  6 |       3 | size     | xxl   | ←

equal属性用标记。因此,最后,我想得到 Neptun Highway 球(未选择 Speedy ,因为size是不同的,并且所有属性都必须相等)。

请记住,所需的属性键和值未知,因此不可能的解决方案是可能的:

Ball.objects.filter(
    balls__key="color", balls__value="blue"
).filter(
    balls__key="size", balls__value="xxl"
)

如何使用Django构建这样的查询集?

0 个答案:

没有答案