サブクラス化するクラスと、関数ListView
を実装した 2 つのカスタム ミックスインを作成しました。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
関数をオーバーライドするにはどうすればよいですか?