Django - ContentType.get_object_for_this_type()的正当例外

时间:2015-11-29 22:28:21

标签: django django-models django-contenttypes

我正在学习使用ContentType framework并需要一些帮助来为get_object_for_this_type()提出例外。

According to the code

  

为给定的关键字参数返回此类型的对象。           基本上,这是围绕此object_type的get_object()模型的代理           方法。如果抛出ObjectNotExist异常,将不会被捕获,           所以调用此方法的代码应该捕获它。

我想知道是否有办法在不引入被引用的实际模型的情况下执行此操作。例如,如果我想做这样的事情:

for model in models
    try:
        i = ContentType.objects.get(app_label="Users", model=model)
        obj = i.get_object_for_this_type(user=self)
        self.profile_type = obj
        self.save()
    except ContentType.object.DoesNotExist:
        continue

此异常通知我'ContentTypeManager' object has no attribute 'DoesNotExist'。有没有办法在不指定模型中的所有模型的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

在文档的其他部分找到这个,不要问我在哪里。在这种情况下使用的正确例外是django.core.excpetions.ObjectDoesnotExist

from django.core.exceptions import ObjectDoesNotExist

for model in models:
    try:
        i = ContentType.objects.get(app_label="Users", model=model)
        obj = i.get_object_for_this_type(user=self)
        self.slug = obj.slug
        self.save()
        return self.profile_type
    except ObjectDoesNotExist:
        continue