F () выражения в Django продолжает давать мне 0 - PullRequest
0 голосов
/ 19 мая 2018

Я собираюсь обновить около 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() - это не тот способ, которым я хочу сделать, если это возможно.

1 Ответ

0 голосов
/ 20 мая 2018

Это работает?

querysets = Model.objects.filter(id__in[111, 123])
querysets.name = F('name') + ' testing'
querysets.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...