django-admin 后台批量导入数据

    有时候,我们需要批量往数据库插入数据,如果能通过django admin后台的拓展配置实现,就再好不过了。

     在网上找到一个现成的插件,通过简单配置就可实现admin后台的文件上传导入,赞!

这里以实际项目中的一个model为例,看下配置的步骤

首先我们要安装 一个插件,这个插件 既支持导入也可以导出。

pip install django-import-export

在我们的settings 的installed_app 里添加上这个app

INSTALLED_APPS = [

  ...,

    'import_export',

]

接下来,结合我自己的model来配置咯

我的model如下:

class SensitiveColumn(models.Model):

    """sensitive column for desensitization """

    db = models.CharField(max_length=100, verbose_name='数据库')

    table = models.CharField(max_length=100, verbose_name='表')

    column = models.CharField(max_length=100, verbose_name='字段')

    comment = models.CharField(max_length=100, verbose_name='注释', blank=True, null=True)

    class Meta:

        verbose_name = u'敏感字段'

        verbose_name_plural = u'敏感字段表'

在这个model所在的app下创建resource.py 文件:

from import_export import resources

from common.models import SensitiveColumn

class SensitiveColumnResource(resources.ModelResource):

    """import"""

    class Meta:

        model = SensitiveColumn

        import_id_fields = ['db', 'table', 'column'] # 这里决定了update_or_create,可以避免重复导入

接着写我们的admin.py文件:

from import_export.admin import ImportExportModelAdmin

from .resource import SensitiveColumnResource

from .models import SensitiveColumn

@admin.register(SensitiveColumn)

class SensitiveColumnsAdmin(ImportExportModelAdmin):

    resource_class = SensitiveColumnResource

    list_display = ('id', 'db', 'table', 'column', 'comment')

简单配置之后我们就可以在django-admin 后台批量导入啦!看下效果:

OK, 后台导入就完成了,是不是很简单快捷又实用?!

还有预览效果噢

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容