Django 1.7 Exceptions文档exceptions.DoesNotExist:
找不到对象时会引发DoesNotExist异常 查询的给定参数。 Django提供了一个DoesNotExist 异常作为每个模型类的属性来标识类 无法找到的对象,并允许您捕获特定的对象 使用try / except的模型类。
基于上述文档,我编写了自定义模型管理器:
class CountryManager(models.Manager):
def get_special(self, *args, **kwargs):
kwargs.update({'country': settings.ACTIVE_COUNTRY})
try:
return self.get(*args, **kwargs)
except self.model.DoesNotExists:
self.logger.warning('Unable to find specific object using filter {}'.format(kwargs))
kwargs.update({'country': settings.DEFAULT_COUNTRY})
return self.get(*args, **kwargs)
请注意: 行{'country': settings.ACTIVE_COUNTRY}
和{'country': settings.DEFAULT_COUNTRY}
的行已针对此示例进行了简化
class CountryModelMixing(models.Model):
country = models.CharField(
max_length=2,
default=settings.DEFAULT_COUNTRY,
choices=settings.COUNTRIES,
verbose_name=_('country')
)
objects = CountryManager()
class Meta:
abstract=True
class Product(CountryModelMixing):
name = models.CharField(max_length=40)
在代码中我试图:
Product.objects.get_special(name='abc')
我收到了以下错误:
/opt/src/common/managers.py in get_special(self, *args, **kwargs)
40 try:
41 return self.get(*args, **kwargs)
---> 42 except self.model.DoesNotExists:
43 self.logger.warning('Unable to find specific object using filter {}'.format(kwargs))
AttributeError: type object 'Product' has no attribute 'DoesNotExists'
答案 0 :(得分:6)
DoesNotExist
不接受“s”:
except self.model.DoesNotExist:
答案 1 :(得分:1)
你错过了例外的名称:
except self.model.DoesNotExists:
# ^
例外名称为DoesNotExist
,最后没有s
。