Django管理扩展
django-admin的Python项目详细描述
Django管理扩展
安装
pip install django-admin
用法
禁用操作:
from django.contrib import admin from django_admin import DeleteModelAdmin # Override action ``delete_selected``, call ``delete_model`` for each when ``delete_selected`` class XXXAdmin(admin.ModelAdmin, DeleteModelAdmin): def delete_model(self, request, obj): obj.delete() # Other Codes # Reopen action ``delete_selected`` after ``admin.site.disable_action('delete_selected')`` class YYYAdmin(admin.ModelAdmin): actions = ['delete_selected'] # Disable ``actions`` class ZZZAdmin(admin.ModelAdmin): actions = None
导出Excel:
from django.contrib import admin from django_admin import ExportExcelModelAdmin, AdvancedExportExcelModelAdmin class XXXAdmin(ExportExcelModelAdmin, admin.ModelAdmin): pass class YYYAdmin(AdvancedExportExcelModelAdmin, admin.ModelAdmin): excel_headers = () excel_fields = () excel_fields_exclude = () extra_excel_fields = () def add_extra_excel_fields(self, request, query): return []
所有字段只读:
from django.contrib import admin from django_admin import ReadonlyModelAdmin, Readonly2ModelAdmin class XXXAdmin(ReadonlyModelAdmin, admin.ModelAdmin): """ Readonly for Update. """ pass class XXXAdmin(Readonly2ModelAdmin, admin.ModelAdmin): """ Readonly for Add/Update. """ pass
禁用编辑:
from django.contrib import admin from django_admin import ReadOnlyModelAdmin class XXXAdmin(ReadOnlyModelAdmin, admin.ModelAdmin): pass * Should add ``django_admin`` in ``INSTALLED_APPS`` ```python INSTALLED_APPS = [ ... 'django_admin', ... ] ```
禁用添加/删除:
from django.contrib import admin from django_admin import ChangeOnlyModelAdmin class XXXAdmin(ChangeOnlyModelAdmin, admin.ModelAdmin): pass
禁用添加/更改:
from django.contrib import admin from django_admin import DeleteOnlyModelAdmin, DeleteonlyModelAdmin class XXXAdmin(DeleteOnlyModelAdmin, admin.ModelAdmin): # DeleteOnlyModelAdmin - All Fields Default Readonly # DeleteonlyModelAdmin - All Fields Not Default Readonly pass * Should add ``django_admin`` in ``INSTALLED_APPS`` ```python INSTALLED_APPS = [ ... 'django_admin', ... ] ```
禁用删除/更改:
from django.contrib import admin from django_admin import AddOnlyModelAdmin class XXXAdmin(AddOnlyModelAdmin, admin.ModelAdmin): pass * Should add ``django_admin`` in ``INSTALLED_APPS`` ```python INSTALLED_APPS = [ ... 'django_admin', ... ] ```
缺点
Will disable ``delete_selected`` for all ``ModelAdmin`` Will lost delete confirm