request.user 的 Django 通用 CBV 查询集
Django generic CBV queryset with request.user
如果我这样做:
class ActivityListView(ListView):
template_name = "activities/activities.html"
queryset = Activity.objects.filter(user=request.user)
我得到:
'request' is not defined
...显然。然后,如果我这样做:
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
我得到:
ImproperlyConfigured "ActivityListVew" must define "queryset" or "model",
我明白了。我想知道解决此问题的最佳方法是什么?
您应该定义 get_queryset
方法而不是
ListView(或者特别是 View 使用的 MultipleObjectMixin)需要一个可以通过 class 属性定义的常量查询集定义(您的第一次尝试),或者一个动态方法来获取数据,这通过 'get_queryset' 方法完成。有关详细信息,请参阅文档:
如果我这样做:
class ActivityListView(ListView):
template_name = "activities/activities.html"
queryset = Activity.objects.filter(user=request.user)
我得到:
'request' is not defined
...显然。然后,如果我这样做:
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
我得到:
ImproperlyConfigured "ActivityListVew" must define "queryset" or "model",
我明白了。我想知道解决此问题的最佳方法是什么?
您应该定义 get_queryset
方法而不是
ListView(或者特别是 View 使用的 MultipleObjectMixin)需要一个可以通过 class 属性定义的常量查询集定义(您的第一次尝试),或者一个动态方法来获取数据,这通过 'get_queryset' 方法完成。有关详细信息,请参阅文档: