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/', }, ] }, ] }
本文来自博客园,作者:羊驼之歌,转载请注明原文链接:https://www.cnblogs.com/shijieli/p/18220783