def changelist_view(self, request, extra_context=None, *args, **kwargs):
        """
        Handle the changelist view, the django view for the model instances
        change list/actions page.
        """

        if "actions_column" not in self.list_display:
            self.list_display.append("actions_column")

        # handle common AJAX requests
        if "__cmd" in request.POST:
            cmd = request.POST.get("__cmd")
            if cmd == "toggle_boolean":
                return self._toggle_boolean(request)
            elif cmd == "move_node":
                return self._move_node(request)

            return HttpResponseBadRequest("Oops. AJAX request not understood.")

        extra_context = extra_context or {}
        extra_context["tree_structure"] = mark_safe(
            json.dumps(_build_tree_structure(self.get_queryset(request)))
        )
        extra_context["node_levels"] = mark_safe(
            json.dumps(
                dict(
                    self.get_queryset(request)
                    .order_by()
                    .values_list("pk", self.model._mptt_meta.level_attr)
                )
            )
        )

        return super().changelist_view(request, extra_context, *args, **kwargs)

        Handle the changelist view, the django view for the model instances
        change list/actions page.
        
feincms/admin/tree_editor.py