Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I have multiple lists in a Django generic.ListView?

As a Django beginner I'm working on the the tutorial provided by django docs at https://docs.djangoproject.com/en/1.5/intro/tutorial04/

In it they demonstrate a list of multiple polls that are listed using a query by publication date. Could I add another list to be also used in the template to be used as well. Example Displaying a list of latest polls by date and another by alphabetical order on the same page.

class IndexView(generic.ListView):
    template_name = 'polls/index.html'
    context_object_name = 'latest_poll_list'

    def get_queryset(self):
        """Return the last five published polls."""
        return Poll.objects.order_by('-pub_date')[:5]
like image 495
user2781163 Avatar asked Sep 15 '13 12:09

user2781163


1 Answers

Absolutely, you'll just need to write your own 'get_context_data' method that will retrieve those values and then they will be available in the view. Something like:

def get_context_data(self, *args, **kwargs):
    context = super(IndexView, self).get_context_data(*args, **kwargs)
    context['alphabetical_poll_list'] = Poll.objects.order_by('name')[:5]
    return context 

With this both {{ latest_poll_list }} and {{ alphabetical_poll_list }} would be available in your template.

like image 164
Frank Wiles Avatar answered Oct 04 '22 19:10

Frank Wiles