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

2024-06-25 22:45:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为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__'

我可以做以下工作,但速度很慢(每1米行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()

Tags: 模型idobjectsmodelsgroupalllengthmax