Переопределение функции множественного наследования Python и ListView в django

Я создал класс, который является подклассом ListViewи два пользовательских миксина, которые реализовали get_context_data. ] функция. Я хотел переопределить эту функцию в дочернем классе:

from django.views.generic import ListView

class ListSortedMixin(object):
    def get_context_data(self, **kwargs):
        print 'ListSortedMixin'
        return kwargs

class ListPaginatedMixin(object):
    def get_context_data(self, **kwargs):
        print 'ListPaginatedMixin'
        return kwargs

class MyListView(ListSortedMixin, ListPaginatedMixin, ListView):
  def get_context_data(self, **context):
    super(ListSortedMixin,self).get_context_data(**context)
    super(ListPaginatedMixin,self).get_context_data(**context)
    return context

Когда я выполняю MyListView, он печатает только "ListSortedMixin". По какой-то причине python выполняет ListSortedMixin.get_context_dataвместо MyListView.get_context_data. Почему?

Если я изменю порядок наследования на ListPaginatedMixin, ListSortedMixin, ListView, выполняется ListPaginatedMixin.get_context_data.

Как переопределить функцию get_context_data?

17
задан Jorge Barata 22 May 2013 в 12:45
поделиться