带request.user的Django通用CBV查询集

时间:2015-02-06 19:53:16

标签: django django-class-based-views

如果我这样做:

class ActivityListView(ListView):
    template_name = "activities/activities.html"
    queryset = Activity.objects.filter(user=request.user)

我明白了:

  

'请求'未定义

很明显......然后,如果我这样做:

def get_context_data(self, **kwargs):
    queryset = Activity.objects.filter(owner=self.request.user)

    context = super(ActivityListView, self).get_context_data(**kwargs)
    context["activities"] = queryset

    return context

我明白了:

  

不正确的配置" ActivityListVew"必须定义" queryset"或"型号",

我明白了。我想知道哪个是解决这个问题的最佳方法?

2 个答案:

答案 0 :(得分:5)

您应该定义get_queryset方法

答案 1 :(得分:2)

ListView(或者View中使用的MultipleObjectMix)想要一个可以通过类属性(第一次尝试)定义的常量查询集定义,或者想要获取数据的动态方法,这需要通过&#来完成39; get_queryset'方法。有关详细信息,请参阅文档:

https://docs.djangoproject.com/en/1.7/ref/class-based-views/mixins-multiple-object/#django.views.generic.list.MultipleObjectMixin.get_queryset