django1.8 F 表达式和字符串子集

django1.8 F expressions and string subsets

我有以下名为 sheetinfo 的模型:

class Sheetinfo(models.Model):
    sheet_id = models.CharField(max_length=30)
    group_id = models.CharField(max_length=200,default = 'xx')

我想将所有 group_id 更新为 sheet_id 字符串的子集 - 具体来说:

group_id = sheet_id[19:-6]

我尝试了以下使用 F 表达式 https://docs.djangoproject.com/en/1.8/ref/models/expressions/#django.db.models.F

def fix_group():
    qs = Sheetinfo.objects.all()
    qs.update(group_num=F('sheet_id')[19:-6])

但是我收到了这个错误:

'F' object has no attribute '__getitem__'

我可以执行以下操作,但速度很慢WWW(每 100 万行 10 分钟以上)

qs = Sheetinfo.objects.all()
for s in qs:
    group_id_str = s.sheet_id
    s.group_id = str(group_id_str)[19:-6]
    s.save()

遗憾的是 F() 支持仅限于使用以下运算符的数字运算:+-*/%**.