我一直很难弄清楚如何使用Django查询集符号实现以下PostgreSQL查询:
SELECT *
FROM t1
JOIN t2 ON t1.a = ANY(ARRAY[t2.d]);
任何帮助将不胜感激!
编辑:
表格:
t1 t2 t_join
--- --- ------
a b c d a b c d
1 w x 1 p {s, t, w} 1 w x p {s, t, w}
2 y z 2 q {r, y, w} 2 w x q {r, y, w}
3 y z q {r, y, w}
型号:
class t1(models.Model):
a = models.CharField(max_length=10, primary_key=True)
b = models.IntegerField(null=True)
class t2(models.Model):
c = models.CharField(max_length=10, primary_key=True)
d = ArrayField(models.CharField(max_length=10))
答案 0 :(得分:0)
我想这是您想要的吗?对于表2数据的每个实例,表1的数据在每一行中重复,如果没有相应的条目,什么都没有?我认为我不太了解array_column的作用。
t1 t2 t_join
-- -- ------
a b c t1_id a b c
1 w x 1 p 1 1 w x p
2 y z 2 q 1 2 w x q
如果您的ORM在正确的方向上定义了ForeignKey关系,则呼叫'select_related'将在每t1行的每一t2行接听。这样的事情值得一试:
table1.objects.select_related('table2')