2个Django类之间的继承

时间:2019-04-01 13:39:11

标签: python django class inheritance django-views

我想将方法​​从第一类继承到第二个方法,该方法分为两个不同的文件。根据我的方法中给出的参数,我遇到了一个小问题。

我有一个名为: main.py

的文件
class CustomCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView):
    template_name = '...'
    model = ...

    def get_context_data(self, **kwargs):
        """ Update the context data with query_string.
        """
        context = super(CustomCreateView, self).get_context_data(**kwargs)
        context['title'] = _("Add new ") + str(self.model._meta.verbose_name)

        context['actual_page'] = get_actual_page(self.request)
        context['actual_search'] = get_actual_search(self.request)
        context['actual_sort'] = get_actual_sorting(self.request, self.default_sort_params[0])
        context['actual_pagination'] = get_pagination(mylist, self.pk)

        return context

def get_actual_page(request):
    actual_page = request.GET.get('page', None)
    ...
    return actual_page


def get_actual_sorting(request, default):
    actual_sorting = request.GET.get('sorting', default)
    return actual_sorting


def get_actual_search(request):
    q = request.GET.get('q', '')
    return q


def get_pagination(mylist, pk):
    actual_pagination = [mylist[x:x + settings.PAGE_LIMIT] for x in range(0, len(mylist), settings.PAGE_LIMIT)]
    ...
    return actual_pagination

我还有另一个文件: views.py

class MyFormView(PermissionRequiredMixin, CustomCreateView):

    def get_context_data(self, **kwargs):
        context = super(MyFormView, self).get_context_data(**kwargs)

        page_row_ids = self.request.session.get('result_recordset', [])

        my_pagination = context['actual_pagination']
        actual_pagination, first_page, last_page, page_number = my_pagination(page_row_ids, pk)

问题:

在我的第一个文件中,我如何在context['actual_pagination'] = get_pagination(mylist, self.pk)中编写自变量,以便在调用该列表时(例如page_row_ids)插入任何列表?

非常感谢您

编辑

我在main.py文件中创建了一个函数:

def get_pagination(mylist, pk)

此函数带有2个参数:

  • myList:必须用list
  • 代替的通用参数
  • pk:必须用id
  • 代替的通用参数

我在get_context_data()类中的CustomCreateView方法中调用此函数。

现在我有另一个类(在第二个文件中),该类继承自CustomCreateView。我想通过将get_pagination的{​​{1}}参数替换为myList的{​​{1}}来调用方法page_row_ids

所以在我的孩子班上,我想得到:

pk
  

文件“ /home/Bureau/Projets/my_project/src/app/views.py”位于   get_context_data     872. context = super(MyFormView,self).get_context_data(** kwargs)

     

文件“ /home/.pyenv/versions/3.6.2/envs/3.6.2/src/app/main.py”位于   get_context_data     50. context ['actual_pagination'] = get_pagination(myList,self.pk)

     

异常类型:/ slug / edit / 41处的AttributeError异常值:   “ MyFormView”对象没有属性“ myList”

我该怎么做?希望通过我的编辑更清晰

0 个答案:

没有答案