У меня есть следующий CBV с пользовательскими миксинами, AjaxFormMixin_Home
и AjaxFormMixin_Production
.
# app1/views.py
class BaseView(AjaxFormMixin_Home, AjaxFormMixin_Production, FormMixin, View):
Исходя из определенных условий AJAX, оба миксина перекрывают def get_context_data(self, **kwargs):
, как требуется FormMixin
. Смотри ниже,
# app1/mixins.py
class AjaxFormMixin_Home(ContextMixin, object):
def get_context_data(self, **kwargs):
context = super(AjaxFormMixin_Home, self).get_context_data(**kwargs)
obj = UserNote.objects.all()
paginatedObject_Home = Paginator(obj, 5)
page = self.request.GET.get('userNotepage')
context.update('paginatedObject_Home':paginatedObject_Home.page(page))
return context
# app2/mixins.py
class AjaxFormMixin_Production(ContextMixin, object):
def get_context_data(self, **kwargs):
context = super(AjaxFormMixin_Production, self).get_context_data(**kwargs)
obj = Production.objects.all()
paginatedObject_Production = Paginator(obj, 5)
page = self.request.GET.get('productionPage')
context.update('paginatedObject_Production':paginatedObject_Production.page(page))
return context
Теперь это проблема. Изменение порядка наследования в BaseView
возвращает только context
, как определено этим конкретным миксином. Мне нужно вернуть paginatedObject_Home
и paginatedObject_Production
на BaseView
.
Например,
Ниже будет возвращен только контекст, определенный AjaxFormMixin_Home
класс BaseView (AjaxFormMixin_Home, AjaxFormMixin_Production, FormMixin, View):
Принимая во внимание, что ниже будет только возвращать контекст, как определено AjaxFormMixin_Production
класс BaseView (AjaxFormMixin_Production, AjaxFormMixin_Home, FormMixin, View):
Наконец, я заметил, что компилятор вообще игнорирует второй миксин (в зависимости от порядка наследования).
Как можно обойти этот тип проблемы?
Спасибо!