Skip to content

Repository files navigation

DRF-Admin

A package to generate CRUD endpoints for registered models with the Django-REST Framework.

Requirements

Installation

To install run:

pip install drf-admin

Usage

  • Import restadmin in the admin.py
  • Call restadmin.site.register(Model) Model being the model to register
  • Add rest admin to your urls.py file

Prerequisite

  • rest_framework should be properly set up to use this package hitch free

A sample of it's configuration in the settings file:

REST_FRAMEWORK={
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
'TEST_REQUEST_RENDERER_CLASSES': [
'rest_framework.renderers.MultiPartRenderer',
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.TemplateHTMLRenderer', ],
"DEFAULT_AUTHENTICATION_CLASSES": [
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication'
],
"DEFAULT_PERMISSION_CLASSES": [
'rest_framework.permissions.AllowAny',
]
}

For example:

models.py

fromdjango.dbimportmodelsclassTestModel(models.Model):
age=models.IntegerField()

admin.py

from .modelsimportTestModelimportrestadminrestadmin.site.register(TestModel)

urls.py

fromrestadminimportsitefromdjango.urlsimportpathurlpatterns= [
...
path('restadmin/', site.urls),
...
]

Customization

This package allows you to specify the following when registering your model

  • serializer_or_modeladmin: A Model Serializer Class or a subclass of RestModelAdmin
  • permission_classes: A list of Permission classes
  • pagination_classs: A Pagination Class

An example of how a call to the register method with all 3 would look is :

restadmin.site.register(TestModel, serializer_or_modeladmin=AdminSerializer, permission_classes=[ReadOnly], pagination_class=LargeResultsSetPagination)

RestModelAdmin expose the same interface as ModelViewSet so you can add the whole customizations that ModelViewSet offers. This includes:

  • Custom querysets
  • redifining defaults methods
  • add actions as ModelViewSet's exta actions

You can also register models with the register decorator

Example:

fromrestadminimportregister, RestModelAdminfrom .modelsimportTestModel@register(TestModel)classTestRestModelAdmin(RestModelAdmin):
serializer_class=MyCustomSerializer# Optional. A default is provided if None defineddefget_queryset(self):
queryset=TestModel.objects.filter(age__lt=30)
returnqueryset

Endpoint Documentation

  • This requires you to have coreapi installed

A page to document the Endpoints generated can be accessed by adding the following to your base urls file

fromrestadminimportsiteurlpatterns= [
...
path('restadmin-docs/', site.docs)
...
]

Using this would require you to have your default schema Class set in your REST_FRAMEWORK config in your settings.py file E.g

REST_FRAMEWORK = { 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema' }

Run your server and you can find the documentation at http://127.0.0.1:8000/restadmin-docs NOTE: The Documentation page is restricted to staff only(is_staff has to be True)

Tests

To run the tests:

From the base directory run :

python load_tests.py

About

A package to generate CRUD endpoints for registered models with the Django-REST Framework.

Topics

Resources

Stars

18 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages