У меня есть следующие модели под названием 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()
ах дерьмо. Ну, похоже, мне нужно прореживать и устанавливать сценарий для запуска в одночасье. Спасибо за вашу помощь! – TangoAlee
@TangoAlee Кажется. Пожалуйста! – cdonts