如何在Django视图中获取属性?

时间:2014-05-13 02:13:56

标签: python django

我有一些团体。用户可以是该组的成员。当用户查看群组资料时,如果他是成员,他应该看到有关他自己的信息。它是如何工作的:

class UniverseDetailView(LoggedInMixin, DetailView):
    model = Universe
    template_name = 'multiuniverse/universe_detail.html'

    def get_context_data(self, **kwargs):
        context = super(UniverseDetailView, self).get_context_data(**kwargs)
        member = Member.objects.get(user=self.request.user, uni=self.object)
        context['member'] = member
        return context

但是,如果他不是这个阵容的成员,我就会收到错误:

Exception Type: DoesNotExist
Exception Value: Member matching query does not exist.

是否可以在没有get_or_create的情况下获得此上下文?

1 个答案:

答案 0 :(得分:0)

来自Django docs on get()

  如果找不到给定参数的对象,

get()会引发DoesNotExist异常。此异常也是模型类的属性

为防止错误停止代码执行,您可以将其包装在try / except:

try:
    context['member'] = Member.objects.get(user=self.request.user, uni=self.object)
except Member.DoesNotExist:
    context['member'] = None

另请参阅:Get an object from the DB, or None if nothing matches