给定一个集合,我想在django视图中排除其他对象后返回单个对象

时间:2013-06-07 21:37:29

标签: django django-templates django-views

我想将一个对象返回到模板上下文,这样我就可以多次重复使用该对象,而不必每次都进行查询。

这是我到目前为止所拥有的:

    def get_context_data(self, **kwargs):
        context = super(MessageCreate, self).get_context_data(**kwargs)
        cohort = Cohort.objects.filter(members=self.request.user)
        context['cohort_member'] = cohort.members.exclude(members=self.request.user)
        return context

我得到的错误是:

'QuerySet' object has no attribute 'members'

所以,我有点困惑。因为我认为属性成员是队列的一部分。如果我在模板中迭代群组,我可以找到用户。

所以,我想要的是单个用户,而不是整个用户。

欢迎任何建议。

谢谢!

1 个答案:

答案 0 :(得分:0)

您的变量cohort是一个查询集,而不是模型实例。要获得实际的模型实例,您必须评估查询集,您可以通过各种方式进行迭代 - 正如您在模板中所做的那样,迭代它是一种方法。当然,查询集可以包含多于或少于一个实例。

那就是说,我对你试图排除和包含的内容感到有些困惑。 cohort_member是否应该是请求用户以外的一组队列成员?如果是这样,有几种方法可以做到这一点,具体取决于您是否需要除模板中的那组成员以外的任何组合以及用户群组关系是多对多还是多对一。而且,如果多对多,您是否希望所有同类群组中的所有其他用户都是该用户的成员,或者您是否希望将它们分开分组。