Я собираюсь обновить около 2-3 тыс. Записей для одной из моих django
моделей.Я знаю, что использование update()
помогло бы, но тогда, потому что я на самом деле использую то же значение в поле и заменяю его на что-то другое, например, имея функцию для очистки существующего поля.
Я подумал, что естьчто-то под названием F()
может помочь мне с этим, но каким-то образом оно сохраняет мои значения в поле как 0.
Я не получил никакой ошибки и понятия не имею, где искать.
это учебник, который я прочитал https://docs.djangoproject.com/en/1.8/ref/models/expressions/
это мой пример кода, прежде чем я действительно сделаю такое пакетное обновление для записей 2-3k
# I used the below, gives me 0 when I look at my db
querysets_of_model = Model.objects.filter(id__in[111, 123]).update(name=F('name') + ' testing')
# this gives me 0 too
querysets = Model.objects.filter(id__in[111,123])
querysets.update(name=F('name') + ' testing')
# without using the F(), which of course gives me `testing only` in the name field
qs = Model.objects.filter(id__in[111, 123]).update(name='testing only')
что яизначально хотел сделать что-то вроде этого
qys = Model.objects.filter().update(name=scrumble_fun(F('name')))
* scrumble_fun
- это просто функция, которая разбирает существующее значение, затем возвращает srcumbled значения и сохраняет его.
Но, конечно, перед этимэто, я сделал в качестве первых двух примеров, чтобы просто вынуть два запроса и выполнить тестирование, чтобы убедиться, что я делаю это правильно.Но похоже, что я не?: (
Заранее благодарим за любую помощь.
PS Проходя через каждый набор запросов, тогда save()
- это не тот способ, которым я хочу сделать, если это возможно.