与Django中查询集中的多行记录相关的字段的串联

时间:2017-12-29 05:15:59

标签: python mysql django annotations concatenation

我必须使用一对多关系模型,我尝试区分我的记录类型。假设第一个模型专用于书籍信息,第二个模型是某些类型,如A,B,C,并且从类型表到书籍之间存在间接关系,因此每本书可以是A,B或C或任何可能的组合类型。我想使用连接(或注释中的任何其他可能的函数来收集字段中的所有类型)。

Book.objects.all(
).annotate(
    Types = F('TableRelation__Type__Name')
).annotate(
    CombinedTypes = Concat('Types')
)

抛出一个错误,因为只有一个参数被传递给Concatenated。 我正在寻找的结果是一个CombinedTypes字段,其中填充了“ABAB”,表示该记录的任何唯一ID都是“AB”(或A,B和C的任何其他组合)。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

我最终使用了this @Ahmad在评论中引入的post中的堆栈溢出答案中解释的解决方案。