我需要找到如何使用 django ORM 构建查询我有两个具有一对多关系的表。
table A
id = integer autonumeric
data = postgres json
...
table B
id = integer autonumeric
id_A = table A id
name = string
t_name = string like slug
有A.data
一个结构为 {key (t_name of table B): value (is a string value)} 的 json
因此实体(名称和 t_name)的定义在表 B 中,实体的值在表 A 的 json 结构中。
埃杰:
Table A
------------
id | data
1 |{"a_01":"value a","a_02":"value a","b_01":"value b"}
2 |{"a_01":"value a","b_01":"value b"}
Table B
-----------
id | id_A | name | t_name
1 | 1 | A | a_01
2 | 1 | AA | a_02
3 | 1 | B | b_01
4 | 2 | A | a_01
5 | 2 | B | b_01
和id_A
一起t_name
是唯一的
我需要从 django orm 中获取名称 (B.name) 和值 (A.data."t_name") 的表 A 中的项目
这个查询解决了我的问题,但我不知道如何在 django ORM
SELECT at.id, at.data, bt.name
FROM "A" AS at
JOIN "B" AS bt ON at.id=bt.id_a
WHERE data ->> bt.t_name = 'value a' AND bt.name='AA'
LIMIT 50;
结果是:
1 | {"a_01":"value a","a_02":"value a","b_01":"value b"} | AA