2015-08-26 2 views
0

У меня есть следующие модели под названием sheetinfo:django1.8 F выражения и строковые подмножества

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 (10+ мин на 1 млн строк)

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

К сожалению F() поддержка ограничена числовые операции со следующими операторами: +, -, *, /, % и **.

+0

ах дерьмо. Ну, похоже, мне нужно прореживать и устанавливать сценарий для запуска в одночасье. Спасибо за вашу помощь! – TangoAlee

+0

@TangoAlee Кажется. Пожалуйста! – cdonts

 Смежные вопросы

  • Нет связанных вопросов^_^