4

ビデオの詳細ページを他のデータとともに表示する必要があります。そのためDetailViewに、いくつかの変数をコンテキストに追加するためにオーバーライドしたものを使用します。

コード部分は次のとおりです。

#urlconf
#...
  (r'viewtube/(?P<pk>\d+)$', VideoFileDetailView.as_view()),
#...

#view
class VideoFileDetailView(DetailView):
  model = VideoFile
  def get_context_data(self, **kwargs):
    context = super(VideoFileDetailView, self).get_context_data(**kwargs)
#    context['rates'] = VideoRate.objects.filter(video=11, user=1)
    return context

pkこれがビデオのIDです。現在のユーザーが選択したビデオのレートを取得する必要があります。

4

2 に答える 2

4

リクエストは でアクセスできる必要がありますself.requestself.requestリクエストの開始時に設定され(View.dispatch)、サブクラス メソッドのいずれかで使用できる必要があります。

class VideoFileDetailView(DetailView):
  model = VideoFile
  def get_context_data(self, **kwargs):
    context = super(VideoFileDetailView, self).get_context_data(**kwargs)
    context['rates'] = VideoRate.objects.filter(video=11, self.request.user)
    # note that the object is available via self.object or kwargs.get("object")
    return context
于 2011-06-21T16:47:09.423 に答える
3

モデルを表示することは有益でした。しかし、残念ながら後者はユーザーを取得するために必要なリクエストを渡されないため、get()ではなくをオーバーライドする必要があると思います。get_context_dataそう:

def get(self, request, **kwargs):
    self.object = self.get_object()
    context = self.get_context_data(object=self.object)
    context['rates'] = VideoRate.objects.filter(video=self.object, user=request.user)
    return self.render_to_response(context)
于 2011-06-21T15:18:37.710 に答える