невозможно установить значения модели Django - PullRequest
0 голосов
/ 22 февраля 2012

У меня есть код ниже

exinfo = ExistingCardInfo.objects.filter(CustID=custid)   
trail4 = exinfo[0].trail4
logger.debug(exinfo[0].trail4) # prints 1984
exinfo[0].trail4=3000
logger.debug(exinfo[0].trail4) # again prints 1984

Первоначально значение trail4 равно 1984. После того, как я установил значение trail4 на 3000, я все еще получаю 1984. Что-то не так с кодом выше?

Ответы [ 4 ]

3 голосов
/ 22 февраля 2012

Индексирование набора запросов перезапускает запрос.Извлеките одну модель, измените поле, сохраните модель, затем переиндексируйте.

0 голосов
/ 22 февраля 2012

Я согласен с @ dm03514, то, что вы получаете после фильтра, это просто набор запросов, любые изменения, которые вы вносите в него, не отражаются в базе данных.Чтобы отразить изменения в базе данных, используйте функцию .save () для объекта.

0 голосов
/ 22 февраля 2012

Как уже говорилось в некоторых других ответах, при индексировании набора запросов django снова попадает в базу данных.

Если вы не хотите сохранять изменения в базе данных (в этом случае вы не захотите использовать .save ()), извлеките эту модель и сохраните ее в переменной:

thismodel = exinfo[0]
print thismodel.trail4
thismodel.trail4 = 3000
print thismodel.trail4

Выше будет напечатано 1984 и 3000. Оно не будет сохранено в базе данных, поэтому строка, сохраненная в базе данных, останется неизменной.

0 голосов
/ 22 февраля 2012

Я сталкивался с чем-то похожим на вас при попытке присвоить значения свойству набора запросов при доступе к ним через индекс.

Можете ли вы попробовать что-то вроде:

excardinfo = exinfo[0]
excardinfo.trail4 = 3000
excardinfo.save()
...