Package: django-restful-admin
Expose Django's admin as a RESTFUL serviceSupport all of restful apiAuto generat serializersUseDjango Rest FrameworkFully customization supportUsing Django Rest Framework ViewSet as AdminModelsSupport default Django auth permissionSupport Django custom model permission with simple configurationUsing Django Rest Framework Serializer(or ModelSerializer) as request validatorsSupport Single Serializer class to customize your detail viewAuto generate documentation for CURDsPagination and ability to change paginatorSupport custom action with permissionSupport all features in DRFSupport LogEntry (Log history of objects)TodoAdd some documentationAdd custom route Api documentationAdd list_displayAdd Filter And SearchAdd exludeAdd FieldsExample inlineLocalizationSomethings that's need in futureHow To Installpip install django-restful-adminadd toINSTALED_APPSINSTALLED_APPS = [
    ...  
   'rest_framework',   
  'django_restful_admin',    
   ...  
]How To useyou need only add the bellow code toadmin.pyin your appsfrom django_restful_admin import admin
from yourapp.models improt FisrtModel, ScoundModel   

admin.site.register(FisrtModel)    
admin.site.register(ScoundModel)Then add URL to your projecturls.pyfrom django_restful_admin import admin as api_admin 
  urlpatterns = [    
      ...   
      path('apiadmin/', api_admin.site.urls),  
  	 ...     
]Run the project and open URLhttp://your-ip:port/apiadmin/enjoy!Change Logexport admin ininit.pyAdd default django auth permissions supportAdd admin.register decoratorCustomizationExampleCreate a new Django project$ django-admin startproject example`
$ cd example
$ python manage.py startapp blogCreate blog app models inblog/models.pyfrom django.db import models

class Category(models.Model)
	title = models.CharField(  
	  max_length=255  
	)

class Post(models.Model):
	title = models.CharField(  
	  max_length=255  
	)
	summery = models.TextField()
	description = models.TextField()
	category = models.ForeignKey(  
		Category,  
		related_name='products',  
		on_delete=models.CASCADE  
	)Add your blog app inINSTALLED_APPSinexample/settings.pyINSTALLED_APPS = [
		# Django default apps...
		'rest_framework',
		'django_restful_admin',

		'blog'
]Add admin URLs to django URLs inexample/urls.pyfrom django.conf.urls import url  
from django.contrib import admin  
from django_restful_admin import admin as api_admin  
from django.urls import path  


urlpatterns = [  
  path('apiadmin/', api_admin.site.urls),  # this line added
  # path('admin/', admin.site.urls),
  # your apis custom must be set here  
]Register your model to restful admin site inblog/admin.pyfrom django_restful_admin import admin as api_admin  
from blog.models import *    

api_admin.site.register(Post) 
api_admin.site.register(Category)Add View and use decoratorsblog/admin.py...
@api_admin.register(Category, Product)  
class MyCustomApiAdmin(BaseRestFulModelAdmin):  
    authentication_classes = (CustomTokenAuthentication,)
	permission_classes = [IsAuthenticated] 
...Read more about authentication and permission DRFDocumentation.Customize serializationAt first, you must define your serializer class
Makeserializers.pyfile inblogOpenblog/serializers.pyand make serializer like this:from rest_framework import serializers
from .models import *
class ProductSerializer(serializers.ModelSerializer):
	class Meta:
		model = Product
		feilds = ('id', 'title')
class CategorySerializer(serializers.ModelSerializer):
	class Meta:
		model = Category
		fields = ('id','title)

class SingleProductSerializer(serializers.ModelSerializer):
	category = CategorySerializer(read_only=True)
	class Meta:
		model = Product
		feilds = ('id', 'title', 'summery', 'description', 'category')from .serializers import ProductSerializer, SingleProductSerializer
@api_admin.register(Product)  
class ProductApiAdmin(BaseRestFulModelAdmin):  
    serializer_class = ProductSerializer
    single_serializer_class = SingleProductSerializerserializer_classuse for serialize list of objects butsingle_serializer_classuse for serializerview signle object,update,partial updateandcreate.Add a custom route with permission@api_admin.register(Product)  
class MyCustomApiAdmin(BaseRestFulModelAdmin):

	@api_admin.action(permission='product.view_product', detail=True, methods=['GET'], url_path=r'my-custom-action/(?P<another_key>[^/.]+)')  
	def my_custom_action(self, request, pk, another_key):
		pass
		## Do what you want to do
		## this action make url like this /apiadmin/blog/product/2/my-custom-action/XXXIf you want to except permission you just send permission=True, for creating custom permission you can passclosure functionorlambdato permission like thispermission=lambda: view, action, request, obj=None: TrueContributeIf you think you can help me please let's start.