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

时间:2015-08-26 00:08:48

标签: python django django-1.8

我有以下名为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__'

我可以做以下工作,但是SLOWWWW(每1M行超过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()

1 个答案:

答案 0 :(得分:1)

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