TOP

django 多数据库接入相关操作

多数据库注册

在配置文件中的 default 同级进行注册即可

DATABASES = {
    "default": {
      .....
    },
    "aaa": {
    .....
    },
    "bbb": {
    .....
    },
}

建立数据表模型

模型建立后做一些操作让使用更加便携, 其他使用此模型的时候正常  AaaTable.objects.using("aaa").all()  =简化为=>  AaaTable.objects.all() 

from django.db import models

from cibo.tools.my_orm import MyORM


class AAADBManager(models.Manager):
    def get_queryset(self):
        return super().get_queryset().using('aaa')


class AaaTable(models.Model):
  # 仅注册自己需要用的字段即可
    aa = MyORM.cf(64)
    bb = MyORM.cf(64)
    cc = MyORM.cf(128)
    dd = MyORM.cf(64)

  # 指定使用的数据库
    objects = AAADBManager()

    class Meta:
    # 取消对此数据表的托管
        managed = False
        db_table = 'table_name' # 指定数据表真实的表名

后台注册模型

需要指定 using 到具体的数据库

@admin.register(AaaTable)
class AaaTableAdmin(admin.ModelAdmin):
    # 注意此处需要指定数据库名字
    using = 'cost'
    list_display = (
        "id",
        "aa",
        "bb",
        "cc",
        "dd",
    )
    list_filter = ("aa", "bb", "cc", "dd")
    list_editable = ("cc",)
    list_per_page = 20
    list_max_show_all = 7
    ordering = ("id",)

simpleui 相关美化配置

 需要注意的是url的地方做处理即可

ADMIN_SIMPLEUI_CONFIG = {
    # 是否使用系统默认菜单,自定义菜单时建议关闭。
    'system_keep': True,
    # 设置是否开启动态菜单, 默认 False 如果开启, 则会在每次用户登陆时刷新展示菜单内容, 一般建议关闭.
    'dynamic': True,
    # 用于菜单排序和过滤, 不填此字段为默认排序和全部显示。空列表[] 为全部不显示.
    'menu_display': ['权限认证', '后台管理', 'OIDC管理', '用户信息', "配置管理"],
    'menus': [
        .....
        {
            'name': '配置管理',
            'icon': '',
            'models': [
          ......
                {
                    'name': '要展示的外部模型',
                    'url': '/admin/是哪个app就放哪个app没影响/table_name/',
                },
            ]
        },
    ]
}

 

posted @ 2024-05-29 17:41  羊驼之歌  阅读(10)  评论(0编辑  收藏  举报