代码之家  ›  专栏  ›  技术社区  ›  wim

从DoesNotExist异常实例获取查找参数

  •  1
  • wim  · 技术社区  · 12 年前

    这个 Django tutorial 有一节显示了一些代码 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 回复  |  直到 12 年前
        1
  •  1
  •   alecxe    12 年前

    本教程是为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)
    

    仅供参考,实际 changeset 试图修复 Passing self to object query may cause infinite regression 问题