Python Django-在get_context_数据内部进行筛选

Python Django-在get_context_数据内部进行筛选,python,django,Python,Django,在Django中使用基于类的视图时,在DetailView中进行文件归档时遇到问题 我想得到的是特定类型中所有电影的列表,即:Movie.objects.all().filter(genre=genre\u id) 我得到这个错误: Traceback (most recent call last): File "C:\Program Files (x86)\Python35-32\lib\site-packages\django\core\handler s\base.py", line

在Django中使用基于类的视图时,在DetailView中进行文件归档时遇到问题

我想得到的是特定类型中所有电影的列表,即:
Movie.objects.all().filter(genre=genre\u id)

我得到这个错误:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Python35-32\lib\site-packages\django\core\handler
s\base.py", line 149, in get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Program Files (x86)\Python35-32\lib\site-packages\django\core\handler
s\base.py", line 147, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Program Files (x86)\Python35-32\lib\site-packages\django\views\generi
c\base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Program Files (x86)\Python35-32\lib\site-packages\django\views\generi
c\base.py", line 88, in dispatch
    return handler(request, *args, **kwargs)
  File "C:\Program Files (x86)\Python35-32\lib\site-packages\django\views\generi
c\detail.py", line 118, in get
    context = self.get_context_data(object=self.object)
  File "C:\Users\admin\trailers\movies\views.py", line 43, in get_context_data
    'all_movies': Movie.objects.all().filter(genre=pk),
NameError: name 'pk' is not defined
当我尝试用
Movie.objects.all().filter(genre=pk)
替换
Movie.objects.all().filter(genre=kwargs['pk]])
时,我得到了:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Python35-32\lib\site-packages\django\core\handler
s\base.py", line 149, in get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Program Files (x86)\Python35-32\lib\site-packages\django\core\handler
s\base.py", line 147, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Program Files (x86)\Python35-32\lib\site-packages\django\views\generi
c\base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Program Files (x86)\Python35-32\lib\site-packages\django\views\generi
c\base.py", line 88, in dispatch
    return handler(request, *args, **kwargs)
  File "C:\Program Files (x86)\Python35-32\lib\site-packages\django\views\generi
c\detail.py", line 118, in get
    context = self.get_context_data(object=self.object)
  File "C:\Users\admin\trailers\movies\views.py", line 43, in get_context_data
    'all_movies': Movie.objects.all().filter(genre=kwargs['pk']),
KeyError: 'pk'
我似乎不知道出了什么问题,任何帮助都将不胜感激

  'all_movies': Movie.objects.all().filter(genre=pk)
你还没有定义pk。您需要首先将pk分配给pk变量

此外,您不需要包括所有:

Movie.objects.filter(genre=pk)

传递给
get\u context\u data
kwargs
参数不包含对象的主键值。您可以从
self.kwargs
获得它,不过:

Movie.objects.all().filter(genre=self.kwargs['pk'])
此外,您将看到
self.object
(这是获取的
类型
实例)在
get\u context\u data
内时存在并可访问,因此您也可以使用它来执行以下操作:

Movie.objects.all().filter(genre=self.object)

你能给我看看这个类的url吗GenreView(generic.DetailView)视图?url(r'^genre/(?P[0-9]+)/$),views.GenreView.as_view(),name='genre')都很好用,尽管我更喜欢
Movie.objects.all().filter(genre=self.object)
谢谢!
Movie.objects.all().filter(genre=self.object)