我有以下名为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()
答案 0 :(得分:1)
不幸的是,F()
支持仅限于使用以下运算符的数字运算:+
,-
,*
,/
,%
和**
。