使用Django从另一个CBV获取上下文

时间:2019-03-08 09:45:29

标签: python django django-views django-pagination

我想获得您的帮助,以便通过get_context_data()在另一个CBV中使用来自Django CBV的上下文。

目标:

基本上,我有一个ListView()的Django pagination。我在get_context_data()中拾取当前页面。然后,我想编辑一个对象,所以我要去UpdateView()

当我发布编辑内容时,它应该返回到上一个分页。例如,如果对象位于第32页上,POST request之后,则需要将我重定向到第32页。

我的代码:

class DocumentListView(AdminMixin, CustomListSearchView):
    """ Render the list of document """

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

        actual_page = self.request.GET.get('page', 1)
        if actual_page:
            context['actual_page'] = actual_page
        return context

class DocumentFormView(CustomPermissionRequiredMixin, DocumentListView, UpdateView):

    def get_current_page(self, **kwargs):
        context = super(DocumentListView, self).get_context_data(**kwargs)
        actual_page = context['actual_page']
        return actual_page

    def get_context_data(self, **kwargs):
        context = super(DocumentFormView, self).get_context_data(**kwargs)
        print(self.get_current_page())
        ...       
        return context

    def post(self, request, pk=None):
        ...
        return render(request, 'app/manage_document_form.html', context)

问题:

我并没有克服actual_page班上的DocumentFormView的问题。

我遇到了这个问题:

  

AttributeError:“ DocumentFormView”对象没有属性“ object”

我尝试添加post()函数:

self.object = self.get_object()

但这不能解决问题。

你有什么主意吗?

0 个答案:

没有答案