Я создал класс, который является подклассом 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
?