Django 切片查询集中的单个字段

Django slice a single field in a queryset

我试图从 char 字段中获取前五个字符,但只针对查询集中的一个字段,但我不断收到各种错误。在视图中有没有有效的方法来做到这一点?

我正在尝试的代码:

var = Model.objects.values('field1', 'field2'[:5], 'field3')

您可以使用 Substr 函数用 field2 的前 5 个字母注释查询集:

from django.db.models.functions import Substr 
queryset = Model.objects.all() 
queryset = queryset.annotate(field2_5=Substr('field2', 1, 5)) 

然后,在值中使用注释字段field2_5

values = queryset.values('field1', 'field2_5', 'field3')