2014-10-21 2 views
0

Когда я нажимаю кнопку сохранения в Admin из Django и пытаюсь увидеть значение isActive в БД, я получаю новое значение из текущей формы, а не из БД.Django admin - как получить исходное значение из DB

Например:

def response_change(self, request, obj): 
employeeList = User.objects.all() 
for e in employeeList: 
    if (e.username == currUser): 
     isAct = e.is_active 

is_active значение, которое дано это тот, в настоящее время в графическом интерфейсе, а не тот, сохраненный в данный момент в БД. Обратите внимание, что я еще не обновил БД.

ответ

1

Как вы можете быть уверены, что не сохраняете это значение в базе данных?

Когда вы нажимаете кнопку «Сохранить», экземпляр обновляется в базе данных.

Для тестирования запросов и смотреть непосредственно значения в базе данных я рекомендую использовать shell_plus

+0

я могу быть уверен, потому что, глядя на в базе данных это значение еще не изменилось. Кроме того, при перегрузке страницы это значение совпадает с исходным. Никаких изменений не было. – dana

0

Вы можете получить исходные данные с помощью obj.pk

def response_change(self, request, obj): 
    original_obj = User.objects.get(obj.pk) 
+0

Я пробовал это, и по какой-то причине я получаю измененные данные, а не оригинальные. Переменная содержит обновленные данные из графического интерфейса, а не тот, который существует в БД. – dana

+0

@dana Вы должны сохранить данные в БД до их получения, вы можете получить его в функции save_model, переопределить его. – WeizhongTu

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