Django QuerySet-在ID数组中联接表

时间:2018-07-15 22:01:54

标签: django postgresql django-queryset

我一直很难弄清楚如何使用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))

1 个答案:

答案 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')