2014-07-31 5 views
1

Django tutorial имеет сечение, отображающее некоторый код с DoesNotExist исключения поднимается:Получения параметров подстановки из экземпляра исключения DoesNotExist

# Request an ID that doesn't exist, this will raise an exception. 
>>> Poll.objects.get(id=2) 
Traceback (most recent call last): 
    ... 
DoesNotExist: Poll matching query does not exist. Lookup parameters were {'id': 2} 

Сообщения на экземпляре исключения показывает параметры, используемые для поиска. Но я не вижу этих параметров:

>>> django.get_version() 
'1.5.6' 
>>> Client.objects.get(pk=2) 
Traceback (most recent call last): 
    ... 
DoesNotExist: Client matching query does not exist. 

Фактически, эта информация была бы очень полезной для моих проектов по отладке проектов. Почему бы нам не увидеть его и как его можно вернуть, если это возможно?

ответ

1

Учебник был написан для Django 1.5. В то время, исключение было более детальным, source:

raise self.model.DoesNotExist(
      "%s matching query does not exist. " 
      "Lookup parameters were %s" % 
      (self.model._meta.object_name, kwargs)) 

Но, в последних версиях, сообщение исключение было изменено и теперь содержит только source:

raise self.model.DoesNotExist(
      "%s matching query does not exist." % 
      self.model._meta.object_name) 

FYI, фактическая changeset попытался исправить ошибку Passing self to object query may cause infinite regression.

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