我想构建一个查询集,以查找具有相同属性的球。存在2个模型:
| id | name |
+----+----------+
| 1 | Neptun |
| 2 | Speedy |
| 3 | Highway |
| 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构建这样的查询集?