Django 批量管理使您能够在 Django 管理中批量添加、批量编辑、批量上传和批量选择。
项目描述
django-批量管理
Django 批量管理使您能够在 Django 管理中批量添加、批量编辑、批量上传和批量选择。
查看下面的屏幕截图以了解 django bulk admin 的外观。
需要 Django >= 1.7。
快速开始
使用 pip 安装:
$ pip install django-bulk-admin
将“bulk_admin”添加到您的 INSTALLED_APPS 设置中,如下所示:
INSTALLED_APPS = ( ... 'bulk_admin', )从bulk_admin.BulkModelAdmin而不是django.contrib.admin.ModelAdmin继承:
from django.contrib import admin from example_project import models import bulk_admin @admin.register(models.Image) class ImageAdmin(bulk_admin.BulkModelAdmin): search_fields = ('title',) @admin.register(models.Project) class ProjectAdmin(bulk_admin.BulkModelAdmin): raw_id_fields = ('images',)享受!
批量上传
默认情况下,django bulk admin 为每个具有upload_to属性的字段类型提供了一个批量上传按钮,例如FileField或ImageField。如果您想自定义提供的按钮(或完全禁用批量上传),请在BulkAdminModel中设置bulk_upload_fields:
@admin.register(models.Image)
class ImageAdmin(bulk_admin.BulkModelAdmin):
bulk_upload_fields = ()
批量上传文件时,会为每个文件创建并保存一个模型实例。如果有必填字段,django bulk admin 会尝试设置唯一值(uuid),上传用户可以在下一步中对其进行编辑。要设置自定义值或支持所需的非字符串字段,请覆盖generate_data_for_file:
@admin.register(models.Image)
class ImageAdmin(bulk_admin.BulkModelAdmin):
def generate_data_for_file(self, request, field_name, field_file, index):
if field_name == 'data':
return dict(title=field_file.name)
return super(ImageAdmin, self).generate_data_for_file(request, field_name, file, index)
注意事项
不会为批量操作生成管理员日志
自定义内联
Django bulk admin 提供了两个与 django admin 提供的类似的内联:
bulk_admin.TabularBulkInlineModelAdmin(默认)
bulk_admin.StackedBulkInlineModelAdmin
您可以像 django admin 一样配置它们:
from django.contrib import admin
from example_project import models
import bulk_admin
class ProjectInline(bulk_admin.StackedBulkInlineModelAdmin):
model = models.Project
raw_id_fields = ('images',)
@admin.register(models.Image)
class ImageAdmin(bulk_admin.BulkModelAdmin):
search_fields = ('title',)
@admin.register(models.Project)
class ProjectAdmin(bulk_admin.BulkModelAdmin):
raw_id_fields = ('images',)
bulk_inline = ProjectInline