【问题标题】:multiple select in select django orm在选择 django orm 中进行多项选择
【发布时间】:2018-11-22 08:59:26
【问题描述】:

我需要让这个语句在 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

任何建议都将不胜感激。

请帮助我,我试图在这里找到这个问题,但没有任何运气。

【问题讨论】:

    标签: django postgresql orm


    【解决方案1】:

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

    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 构建一个定义更好的数据模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-02
      • 2015-07-15
      • 2021-05-28
      • 2011-02-13
      • 2022-06-11
      • 1970-01-01
      • 2018-10-21
      • 2012-02-13
      相关资源
      最近更新 更多