'dict'对象在django中没有属性'filter'

时间:2016-03-28 14:54:57

标签: django django-views

我创建了一个基于类的视图

class MyLibrary(generic.DetailView):

    context_object_name = 'data'

    def get_template_names(self):
        request = self.request
        template_name = 'my_library.html'
        return [template_name]

    def get_queryset(self):
        request = self.request
        user = request.user
        context = {}
        mainData = []
        userIssuedBooks = BooksIssued.objects.filter(user=user)
        print(userIssuedBooks)
        if user.is_authenticated():
            context['issuedBooks'] = userIssuedBooks
        return context

我在调用视图时遇到以下错误

Internal Server Error: /mylibrary/1/admin
Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\django\core\handlers\base.py", line 149, 
in get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Python34\lib\site-packages\django\core\handlers\base.py", line 147,     in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python34\lib\site-packages\django\contrib\auth\decorators.py", line 2
3, in _wrapped_view
return view_func(request, *args, **kwargs)
File "C:\Python34\lib\site-packages\django\views\generic\base.py", line 68,     in view
return self.dispatch(request, *args, **kwargs)
File "C:\Python34\lib\site-packages\django\views\generic\base.py", line 88, in
dispatch
return handler(request, *args, **kwargs)
File "C:\Python34\lib\site-packages\django\views\generic\detail.py", line   117,
in get
self.object = self.get_object()
File "C:\Python34\lib\site-packages\django\views\generic\detail.py", line 38,
in get_object
queryset = queryset.filter(pk=pk)
AttributeError: 'dict' object has no attribute 'filter'

我不知道为什么会产生这个错误。有人可以帮忙找到这里的错误吗?

1 个答案:

答案 0 :(得分:5)

在django DetailView中,get_queryset期望用户返回一个查询集(顾名思义),但是你返回了一个dict context。您需要在get_context_data中执行当前的操作。

Django doc about adding extra context