Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap.

Overview

Xadmin Build Status

Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap.

Live Demo

http://demo.xadmin.io

  • User: admin
  • Password: admin

Features

  • Drop-in replacement of Django admin
  • Twitter Bootstrap based UI with theme support
  • Extensible with plugin support
  • Better filter, date range, number range, etc.
  • Built-in data export with xls, csv, xml and json format
  • Dashboard page with widget support
  • In-site bookmarking
  • Full CRUD methods

Screenshots

Actions
Filter
Chart
Export Data
Edit inline

Get Started

Install

Xadmin is best installed via PyPI. To install the latest version, run:

pip install xadmin

or Install from github source:

pip install git+git://github.com/sshwsfc/xadmin.git

Install from github source for Django 2.0:

pip install git+git://github.com/sshwsfc/[email protected]

Install Requires

Documentation

Changelogs

0.6.0

  • Compact with Django1.9.
  • Add Clock Picker widget for timepicker.
  • Fixed some userface errors.

0.5.0

  • Update fontawesome to 4.0.3
  • Update javascript files to compact fa icons new version
  • Update tests for the new instance method of the AdminSite class
  • Added demo graphs
  • Added quickfilter plugin.
  • Adding apps_icons with same logic of apps_label_title.
  • Add xlsxwriter for big data export.
  • Upgrade reversion models admin list page.
  • Fixed reverse many 2 many lookup giving FieldDoesNotExist error.
  • Fixed user permission check in inline model.

Detail

Online Group

  • QQ群 : 282936295

Run Demo Locally

cd demo_app
./manage.py migrate
./manage.py runserver

Open http://127.0.0.1:8000 in your browser, the admin user password is admin

Help

Help Translate : http://trans.xadmin.io

Comments
  • pip install的时候提示字符编码错误

    pip install的时候提示字符编码错误

    我的django版本是1.9,Python版本是3.5 windows10系统

    C:\Users\Hao\Project\django\xadmin>pip install django-xadmin
    Collecting django-xadmin
      Using cached django-xadmin-0.5.0.tar.gz
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "C:\Users\Hao\AppData\Local\Temp\pip-build-tp9q6ucv\django-xadmin\setup.py", line 11, in <module>
            long_description=open('README.rst').read(),
        UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 3256: illegal multibyte sequence
    
        ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in C:\Users\Hao\AppData\Local\Temp\pip-build-tp9q6ucv\django-xadmin\
    
    opened by awmleer 16
  • Widgets are not loading correctly when inline extra = 0

    Widgets are not loading correctly when inline extra = 0

    Hi there,

    Somehow when I use inlines and define extra = 0 for my inline, the widgets for instance, the calendar and the cool dropdowns with search functionality stopped working, apparently they do not load correctly, but if I change to extra = 1 everything works fine again.

    Best, Dennis.

    opened by djheroez 9
  • 不支持Django==1.11

    不支持Django==1.11

    环境python 2.7.13 Django==1.11

    报错信息

    Traceback (most recent call last):
      File "D:\Python2\lib\site-packages\django\utils\autoreload.py", line 227, in wrapper
        fn(*args, **kwargs)
      File "D:\Python2\lib\site-packages\django\core\management\commands\runserver.py", line 117, in inner_run
        autoreload.raise_last_exception()
      File "D:\Python2\lib\site-packages\django\utils\autoreload.py", line 250, in raise_last_exception
        six.reraise(*_exception)
      File "D:\Python2\lib\site-packages\django\utils\autoreload.py", line 227, in wrapper
        fn(*args, **kwargs)
      File "D:\Python2\lib\site-packages\django\__init__.py", line 27, in setup
        apps.populate(settings.INSTALLED_APPS)
      File "D:\Python2\lib\site-packages\django\apps\registry.py", line 116, in populate
        app_config.ready()
      File "D:\python_project\serverlist\xadmin\apps.py", line 14, in ready
        self.module.autodiscover()
      File "D:\python_project\serverlist\xadmin\__init__.py", line 27, in autodiscover
        from xadmin.views import register_builtin_views
      File "D:\python_project\serverlist\xadmin\views\__init__.py", line 5, in <module>
        from edit import CreateAdminView, UpdateAdminView, ModelFormAdminView
      File "D:\python_project\serverlist\xadmin\views\edit.py", line 16, in <module>
        from xadmin import widgets
      File "D:\python_project\serverlist\xadmin\widgets.py", line 6, in <module>
        from django.forms.widgets import RadioFieldRenderer, RadioChoiceInput
    ImportError: cannot import name RadioFieldRenderer
    
    opened by pc10201 7
  • Django 1.7 problem(AppRegistryNotReady)

    Django 1.7 problem(AppRegistryNotReady)

    Python 2.7

    My Url:

    from django.conf.urls import patterns, include, url
    import xadmin
    
    xadmin.autodiscover()
    
    urlpatterns = patterns('',
        url(r'^xadmin/', include(xadmin.site.urls))
    ) 
    

    My settings:

    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'xadmin',
        'crispy_forms'
    )
    

    Exception on runserver:

    /env/bin/python /path/manage.py runserver 8000
    Traceback (most recent call last):
      File "/path/manage.py", line 12, in <module>
        execute_from_command_line(sys.argv)
      File "/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
        utility.execute()
      File "/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
        django.setup()
      File "/env/local/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
        apps.populate(settings.INSTALLED_APPS)
      File "/env/local/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
        app_config.import_models(all_models)
      File "/env/local/lib/python2.7/site-packages/django/apps/config.py", line 197, in import_models
        self.models_module = import_module(models_module_name)
      File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
        __import__(name)
      File "/env/local/lib/python2.7/site-packages/xadmin/models.py", line 19, in <module>
        AUTH_USER_MODEL = django.contrib.auth.get_user_model()
      File "/env/local/lib/python2.7/site-packages/django/contrib/auth/__init__.py", line 136, in get_user_model
        return django_apps.get_model(settings.AUTH_USER_MODEL)
      File "/env/local/lib/python2.7/site-packages/django/apps/registry.py", line 199, in get_model
        self.check_models_ready()
      File "/env/local/lib/python2.7/site-packages/django/apps/registry.py", line 131, in check_models_ready
        raise AppRegistryNotReady("Models aren't loaded yet.")
    django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
    
    opened by alexsilva 7
  • changelist_view

    changelist_view

    Hi, I user changelist_view method to control which column I want to show in the admin view. Is there any similar method I can call using xadmin? Thanks in advance.

    opened by letspw 7
  • django2.0分支 xadmin.site.register注册之后,后台看不到[已解决,各种缓存的问题]

    django2.0分支 xadmin.site.register注册之后,后台看不到[已解决,各种缓存的问题]

    生产模式,DEBUG = False 使用数据库为mysql python版本为3.5 原admin.py中已经注释掉了 新adminx.py如下: import xadmin from .models import Article class ArticleAdmin(object): pass xadmin.site.register(Article,ArticleAdmin)

    setting.py中也注册了xadmin,如下: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'article', 'xadmin', 'crispy_forms', 'reversion', ]

    路径也设置了,在setting.py中。如下: sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))

    在urls.py中,设置了autodiscover,如下: xadmin.autodiscover() urlpatterns = [ path('xadmin/', xadmin.site.urls), ]

    已经makemigrations和migrate了 可以进入后台,但是看不到注册的表。 之前的admin是可以看见的。

    opened by Zerahhah 6
  • demo 无法运行

    demo 无法运行

    按照教程 直接运行报错,希望能够修复,非常感谢

    windows 环境 Python3.6 Django2

    PS D:\360安全浏览器下载\xadmin-master\demo_app> python manage.py runserver Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x000001D114703268> Traceback (most recent call last): File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\utils\autoreload.py", line 225, in wrapper fn(*args, **kwargs) File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\core\management\commands\runserver.py", line 112, in inner_run autoreload.raise_last_exception() File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\utils\autoreload.py", line 248, in raise_last_exception raise _exception[1] File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\core\management\__init__.py", line 327, in execute autoreload.check_errors(django.setup)() File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\utils\autoreload.py", line 225, in wrapper fn(*args, **kwargs) File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\apps\registry.py", line 112, in populate app_config.import_models() File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\django\apps\config.py", line 198, in import_models self.models_module = import_module(models_module_name) File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 994, in _gcd_import File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 665, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 678, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "D:\360安全浏览器下载\xadmin-master\demo_app\..\xadmin\models.py", line 8, in <module> from django.core.urlresolvers import NoReverseMatch, reverse ModuleNotFoundError: No module named 'django.core.urlresolvers'

    opened by hyzx86 6
  • 新增xadmin导入导出插件,集成django-import-export,支持多种格式数据导入导出

    新增xadmin导入导出插件,集成django-import-export,支持多种格式数据导入导出

    你好: xadmin有很多实用功能,不过目前只有导出没有导入,很多同学也遇到了和我一样的问题。所以我结合了django-import-export做出了导入功能,顺便做了对应的导出功能(与原有导出不冲突)。 ps:第一次向这么高大上的项目提交代码,我自己也不是纯粹的开发人员,希望管理员能多多指导,万分感谢。 导入导出插件使用方法示例:

    #Use:
    #+++ settings.py +++
    INSTALLED_APPS = (
        ...
        'import_export',
    )
    
    #+++ models.py +++
    from django.db import models
    
    class Foo(models.Model):
        name = models.CharField(max_length=64)
        description = models.TextField()
    
    #+++ adminx.py +++
    import xadmin
    from import_export import resources
    from .models import Foo
    
    class FooResource(resources.ModelResource):
    “”“
    设置导入及导出的Resource类
    ”“”
        class Meta:
            model = Foo
            # fields = ('name', 'description',)
            # exclude = ()
    
    
    @xadmin.sites.register(Foo)
    class FooAdmin(object):
        # 声明import_export_args参数导入和导出的Resource类后,list页面便有导入和导出按钮
        import_export_args = {'import_resource_class': FooResource, 'export_resource_class': FooResource}
    
    opened by zcyuefan 6
  • Need help with the list widget parameters in xadmin

    Need help with the list widget parameters in xadmin

    I have a model which looks like this :

    
    class Change(models.Model):
        Ticket_Number = models.CharField(max_length=100)
        Start_Time = models.DateTimeField(help_text='in EST')
        Change_status_choice = ((1, 'Not Yet Started'), (2, 'In Progress'), (3, 'Partially Completed'),
                                (4, 'Completed'), (5, 'Rescheduled'), (6, 'Cancelled'), (7, 'Reverted'),
                                (8, 'Failed'), (9, 'Duplicate Entry'), (10, 'No change required'),
                                (11, 'Transferred to IPAM'))
        Change_status = models.SmallIntegerField(choices=Change_status_choice, default=1, max_length=50)
    

    Is it possible to display the count of tickets in various Change_status between 2 different times. For example,can I get a list display widget of all changes between 1 Jan 2014 00:00 Hrs AND 20 Jan 2014 2014 00:00 as follows:

    Total=X Completed = Y Cancelled = Z Not Yet Started = R and so on.

    I am hoping that I can add some parameter value to the list widget to display a table like this. Any help in this regard will be greatly appreciated.

    opened by arjunnambiartc 6
  • django2.1:cannot import name 'QUERY_TERMS' from 'django.db.models.sql.constants'

    django2.1:cannot import name 'QUERY_TERMS' from 'django.db.models.sql.constants'

    试了下网上说的方法, 把 from django.db.models.sql.query import LOOKUP_SEP, QUERY_TERMS 改成

    from django.db.models.sql.query import LOOKUP_SEP
    from django.db.models.sql.constants import QUERY_TERMS
    

    还是报错 cannot import name 'QUERY_TERMS' from 'django.db.models.sql.constants'

    opened by rotateX 5
  • xadmin登录是出现TemplateDoesNotExist

    xadmin登录是出现TemplateDoesNotExist

    TemplateDoesNotExist at /xadmin/ xadmin/views/index.html

    。。。

    Template-loader postmortem

    Django tried loading these templates, in this order:

    Using engine django: django.template.loaders.filesystem.Loader: <我的工作路径*-*>\templates\xadmin\views\index.html (Source does not exist)

    opened by boomxy 5
  • Compatible for Django 3.x (Test for 3.2.15)

    Compatible for Django 3.x (Test for 3.2.15)

    合并了原项目的#706 和#716 PR请求,并做了部分修改适应django3 在django-3.2.15上测试暂无问题 安装以下两个依赖:

    pip install requests
    pip install cryptography
    

    参考: https://github.com/sshwsfc/xadmin/pull/706/files https://github.com/sshwsfc/xadmin/pull/716/files https://blog.csdn.net/weixin_43865334/article/details/115071848

    使用pip安装这个分支的xadmin:

    pip install https://github.com/SzLeaves/xadmin-django3/archive/refs/heads/master.zip 
    
    opened by SzLeaves 0
  • LookupError: No installed app with label 'reversion'.

    LookupError: No installed app with label 'reversion'.

    Internal Server Error: /xadmin/ Traceback (most recent call last): File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\django\apps\registry.py", line 155, in get_app_config return self.app_configs[app_label] KeyError: 'reversion'

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner response = get_response(request) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response response = self.process_exception_by_middleware(e, request) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\sites.py", line 300, in wrapper return self.admin_view(view, cacheable)(*args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\django\views\decorators\cache.py", line 44, in _wrapped_view_func response = view_func(request, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\sites.py", line 208, in inner return view(request, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 282, in view return handler(request, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\django\views\decorators\cache.py", line 44, in _wrapped_view_func response = view_func(request, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\dashboard.py", line 593, in get return self.template_response('xadmin/views/dashboard.html', self.get_context()) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 80, in method return filter_chain(filters, len(filters) - 1, _inner_method, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 63, in filter_chain return filter_chain(filters, token - 1, _inner_method, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 49, in filter_chain return func() File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 62, in _inner_method return fm(func if fargs[1] == '' else func(), *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 74, in _inner_method return func(self, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\dashboard.py", line 586, in get_context context = super(Dashboard, self).get_context() File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 80, in method return filter_chain(filters, len(filters) - 1, _inner_method, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 63, in filter_chain return filter_chain(filters, token - 1, _inner_method, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 49, in filter_chain return func() File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 62, in _inner_method return fm(func if fargs[1] == '' else func(), *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 74, in _inner_method return func(self, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 410, in get_context menus = copy.copy(self.get_nav_menu()) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 80, in method return filter_chain(filters, len(filters) - 1, _inner_method, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 49, in filter_chain return func() File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 74, in _inner_method return func(self, *args, **kwargs) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\xadmin\views\base.py", line 373, in get_nav_menu app_title = smart_text(apps.get_app_config(app_label).verbose_name) File "C:\Users\Lenovo\code\ft\venv\lib\site-packages\django\apps\registry.py", line 162, in get_app_config raise LookupError(message) LookupError: No installed app with label 'reversion'. [24/Aug/2021 15:59:27] "GET /xadmin/ HTTP/1.1" 500 183939

    opened by haiya512 1
Releases(0.4.0)
Extendable, adaptable rewrite of django.contrib.admin

django-admin2 One of the most useful parts of django.contrib.admin is the ability to configure various views that touch and alter data. django-admin2

Jazzband 1.2k Dec 29, 2022
xarray: N-D labeled arrays and datasets

xarray is an open source project and Python package that makes working with labelled multi-dimensional arrays simple, efficient, and fun!

Python for Data 2.8k Dec 29, 2022
FastAPI Admin Dashboard based on FastAPI and Tortoise ORM.

FastAPI ADMIN 中文文档 Introduction FastAPI-Admin is a admin dashboard based on fastapi and tortoise-orm. FastAPI-Admin provide crud feature out-of-the-bo

long2ice 1.6k Jan 02, 2023
BitcartCC is a platform for merchants, users and developers which offers easy setup and use.

BitcartCC is a platform for merchants, users and developers which offers easy setup and use.

BitcartCC 270 Jan 07, 2023
Awesome Video Datasets

Awesome Video Datasets

Yunhua Zhang 462 Jan 02, 2023
:honey_pot: A fake Django admin login screen page.

django-admin-honeypot django-admin-honeypot is a fake Django admin login screen to log and notify admins of attempted unauthorized access. This app wa

Derek Payton 907 Dec 31, 2022
Modern theme for Django admin interface

Django Suit Modern theme for Django admin interface. Django Suit is alternative theme/skin/extension for Django administration interface. Project home

Kaspars Sprogis 2.2k Dec 29, 2022
Extendable, adaptable rewrite of django.contrib.admin

django-admin2 One of the most useful parts of django.contrib.admin is the ability to configure various views that touch and alter data. django-admin2

Jazzband 1.2k Dec 29, 2022
Django app that enables staff to log in as other users using their own credentials.

Impostor Impostor is a Django application which allows staff members to login as a different user by using their own username and password. Login Logg

Andreu Vallbona Plazas 144 Dec 13, 2022
A Django admin theme using Twitter Bootstrap. It doesn't need any kind of modification on your side, just add it to the installed apps.

django-admin-bootstrapped A Django admin theme using Bootstrap. It doesn't need any kind of modification on your side, just add it to the installed ap

1.6k Dec 28, 2022
Jet Bridge (Universal) for Jet Admin – API-based Admin Panel Framework for your application

Jet Bridge for Jet Admin – Admin panel framework for your application Description About Jet Admin: https://about.jetadmin.io Live Demo: https://app.je

Jet Admin 1.3k Dec 27, 2022
Python Crypto Bot

Python Crypto Bot

Michael Whittle 1.6k Jan 06, 2023
Tornadmin is an admin site generation framework for Tornado web server.

Tornadmin is an admin site generation framework for Tornado web server.

Bharat Chauhan 0 Jan 10, 2022
Extends the Django Admin to include a extensible dashboard and navigation menu

django-admin-tools django-admin-tools is a collection of extensions/tools for the default django administration interface, it includes: a full feature

Django Admin Tools 731 Dec 28, 2022
EOD (Easy and Efficient Object Detection) is a general object detection model production framework.

EOD (Easy and Efficient Object Detection) is a general object detection model production framework.

383 Jan 07, 2023
Jinja is a fast, expressive, extensible templating engine.

Jinja is a fast, expressive, extensible templating engine. Special placeholders in the template allow writing code similar to Python syntax.

The Pallets Projects 9k Jan 04, 2023
A python application for manipulating pandas data frames from the comfort of your web browser

A python application for manipulating pandas data frames from the comfort of your web browser. Data flows are represented as a Directed Acyclic Graph, and nodes can be ran individually as the user se

Schlerp 161 Jan 04, 2023
fastapi-admin is a fast admin dashboard based on FastAPI and TortoiseORM with tabler ui, inspired by Django admin.

fastapi-admin is a fast admin dashboard based on FastAPI and TortoiseORM with tabler ui, inspired by Django admin.

fastapi-admin 1.6k Dec 30, 2022
"Log in as user" for the Django admin.

django-loginas About "Login as user" for the Django admin. loginas supports Python 3 only, as of version 0.4. If you're on 2, use 0.3.6. Installing dj

Stavros Korokithakis 326 Dec 03, 2022
Collection of admin fields and decorators to help to create computed or custom fields more friendly and easy way

django-admin-easy Collection of admin fields, decorators and mixin to help to create computed or custom fields more friendly and easy way Installation

Ezequiel Bertti 364 Jan 08, 2023