代码之家  ›  专栏  ›  技术社区  ›  AbstractProblemFactory

非常长的查询

  •  0
  • AbstractProblemFactory  · 技术社区  · 15 年前

    如何进行长查询?有没有办法优化它? 我会做复杂而漫长的查询:

    all_accepted_parts = acceptedFragment.objects.filter(fragmentID = fragment.objects.filter(categories = fragmentCategory.objects.filter(id=1)))
    

    但它不起作用,我得到:

    Error binding parameter 0 - probably unsupported type.
    

    我将感谢任何提示,我如何优化它或解决当然也-更感谢:)

    2 回复  |  直到 15 年前
        1
  •  4
  •   Javier    15 年前

    如果它不起作用,你就不能优化它。首先让它工作。

    乍一看,您似乎对字段、关系和平等/成员关系有着非常复杂的概念。首先考虑一下文档,然后在python shell上逐个构建您的查询(很可能是从内到外)。

    只是在黑暗中拍摄:

    all_accepted_parts = acceptedFragment.objects.filter(fragment__in = fragment.objects.filter(categories = fragmentCategory.objects.get(id=1)))
    

    或者:

    all_accepted_parts = acceptedFragment.objects.filter(fragment__in = fragment.objects.filter(categories = 1))
    
        2
  •  4
  •   Daniel Roseman    15 年前

    正如其他人所说,我们真的需要这些模型,以及一些你实际想要实现的解释。

    但看起来您想进行相关的表查找。与其在单独的嵌套查询中获取所有相关对象,不如使用Django的相关模型语法在查询中进行联接。

    类似:

    acceptedFragment.objects.filter(fragment__categories__id = 1)