Often you simply need to present some extra information beyond that provided by the generic view. For example, think of showing a list of all the books on each publisher detail page. The DetailView
generic view provides the publisher to the context, but how do we get additional information in that template?
The answer is to subclass DetailView
and provide your own implementation of the get_context_data
method. The default implementation simply adds the object being displayed to the template, but you can override it to send more:
from django.views.generic import DetailView from books.models import Publisher, Book class PublisherDetail(DetailView): model = Publisher def get_context_data(self, **kwargs): # Call the base implementation first to get a context context = super(PublisherDetail, self).get_context_data(**kwargs) # Add in a QuerySet of all the books context...