在select django orm中选择多个

时间:2018-06-12 21:23:46

标签: django postgresql orm

我需要在Django中使用ORM,但是如何制作它。

SELECT
    table_1.id,
    (SELECT COALESCE(SUM(qty_1), 0) FROM table_2 WHERE table_2.fk = table_1.id AND date BETWEEN start_date AND end_date),
    (SELECT COALESCE(SUM(qty_2), 0) FROM table_2 WHERE table_2.fk = table_1.id AND date BETWEEN start_date AND end_date),
    (SELECT COALESCE(SUM(qty_3), 0) FROM table_2 WHERE table_2.fk = table_1.id AND date BETWEEN start_date AND end_date)
FROM
    table_1

任何建议都将不胜感激。

Plz帮助我,我试着在这里找到这个问题而没有任何运气。

1 个答案:

答案 0 :(得分:0)

有人可以展示这种多对多关系的直接方式。我通常单独构建该联结对象。所以我会做这样的事情:

class Options(...):
    name = models.CharField(...)
    ...

class Question(...):
    question = models.CharField(...)
    type = ...
    ...

 class QuestionResponseRegistry(...):
    question = models.ForeignKey(Question)
    option = models.ForeignKey(Option)
    value = ...

所以基本上你构建自己的联结对象。在别人叫我和你出去之前,我不妨指出明显的事实。不正确地使用django我们都是不同程度的。 django的ORM的全部功能是抽象高于映射到不同的SQL操作。我提出了一种通过直接构建联结对象来链接联结对象的方法,但这样做在某种程度上不仅仅是使用many-to-many or one-to-many relationships构建更好的数据模型。