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()
支持仅限于使用以下运算符的数字运算:+
、-
、*
、/
、%
和 **
.
我有以下名为 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()
支持仅限于使用以下运算符的数字运算:+
、-
、*
、/
、%
和 **
.