Django批量向admin注册模型方法详解

 更新时间:2023年06月21日 14:56:12   作者:alue  
这篇文章主要为大家介绍了Django批量向admin注册模型方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

大量模型需要注册到 admin 页面

如果有大量模型需要注册到 admin 页面, 手工一个个复制粘贴,然后修改名称, 还挺麻烦. 有没有自动化途经呢?

一个最直观的做法如下:

from django.apps import apps  
models = apps.get_models()  
for model in models:  
    admin.site.register(model)

的确能够完成目标, 但存在一个缺陷. 如果有些模型已经被注册过了, 那么程序将抛出异常, 因为模型不能重复注册.

所以, 可以做个异常处理, 如果已经注册, 那就 pass.

from django.apps import apps  
models = apps.get_models()  
for model in models:  
try:  
    admin.site.register(model)  
except admin.sites.AlreadyRegistered:  
    pass

这里要注意, 上述代码必须放在所有 admin 注册行为之后运行.

如果, 我们想让注册后的 admin 列表页自动显示所有字段, 那该如何修改上述代码呢?
我们可以利用 admin.register(model_or_iterable, admin_class=None) 方法的第二个参数 admin_class , 来实现这一行为.

list_display 的动态获取

通过构造 mixin 类 ListAdminMixin, 实现 list_display 的动态获取:

from django.apps import apps  
from django.contrib import admin  
class ListAdminMixin(object):  
    def __init__(self, model, admin_site):  
        self.list_display = [field.name for field in 
        model._meta.fields]  
        super(ListAdminMixin, self).__init__(model, admin_site)  
models = apps.get_models()  
for model in models:  
    admin_class = type('AdminClass',
    (ListAdminMixin,admin.ModelAdmin), {})  
    try:  
        admin.site.register(model, admin_class)  
    except admin.sites.AlreadyRegistered:  
        pass

这样就实现了预期的功能.

以上就是Django批量向admin注册模型方法详解的详细内容,更多关于Django批量向admin注册模型的资料请关注脚本之家其它相关文章!

相关文章

  • python二分法实现实例

    python二分法实现实例

    这篇文章主要介绍了python二分法的实现代码,大家可以参考使用
    2013-11-11
  • Python编写单元测试代码实例

    Python编写单元测试代码实例

    这篇文章主要介绍了Python编写单元测试代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Python轻松写个课堂随机点名系统

    Python轻松写个课堂随机点名系统

    现在的学生大部分都很积极,会主动举手回答问题。但是,也会遇到一些不好的情况,比如年级越高主动举手的人越少,所以本文写了一个随机的学生点名系统可以帮老师解决这些问题
    2023-01-01
  • 使用Keras实现简单线性回归模型操作

    使用Keras实现简单线性回归模型操作

    这篇文章主要介绍了使用Keras实现简单线性回归模型操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python实现自动化域名批量解析分享

    Python实现自动化域名批量解析分享

    这篇文章主要介绍了Python实现自动化域名批量解析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • Python ArcPy批量掩膜、重采样大量遥感影像的操作

    Python ArcPy批量掩膜、重采样大量遥感影像的操作

    这篇文章主要介绍了Python ArcPy批量掩膜、重采样大量遥感影像,本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件进行批量掩膜与批量重采样的操作,需要的朋友可以参考下
    2023-03-03
  • python之pyinstaller组件打包命令和异常解析实战

    python之pyinstaller组件打包命令和异常解析实战

    前段时间在制作小工具的时候,直接在命令行用pyinstaller工具打包成功后,启动exe可执行文件的时候各种报错, 今天,我们就分享一下踩坑经过,需要的朋友可以参考下
    2021-09-09
  • Python格式化日期时间操作示例

    Python格式化日期时间操作示例

    这篇文章主要介绍了Python格式化日期时间操作,结合实例形式分析了Python使用time模块针对日期时间的获取、转换、格式化、判断等相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • Python基础之语法错误和异常详解

    Python基础之语法错误和异常详解

    Python有两种错误很容易辨认:语法错误和异常.本文就给大家详细介绍一下Python错误和异常,对正在学习python的小伙伴们很有帮助哦,需要的朋友可以参考下
    2021-05-05
  • python matlibplot绘制3D图形

    python matlibplot绘制3D图形

    这篇文章主要为大家详细介绍了python matlibplot绘制3D图形,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07

最新评论