使用Substr和负值在注释中切片查询结果字符串字段

时间:2018-01-03 07:53:30

标签: python django substr annotate

我正在尝试使用this post中给出的方法对字段的最后两个字符进行切片并对其进行注释以查询结果。类似的东西:

Person.objects.all()\
.annotate(
    code = Substr('str', 1, -2),
)

一旦我使用负值作为第三个参数,上面的代码就会返回一个空字符串。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

首先需要为正索引注释一个字段。然后您可以按如下方式使用Substr:

Person.objects.annotate(
    PositiveIndex=ExpressionWrapper(Length('str') - 1, output_field=CharField()),
    code=Substr('str', F('PositiveIndex'))
).values('code')