mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 18:32:48 +00:00
45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
# coding=utf-8
|
||
"""
|
||
@project: MaxKB
|
||
@Author:虎虎
|
||
@file: database_model_manage.py
|
||
@date:2025/4/15 11:06
|
||
@desc:
|
||
"""
|
||
from importlib import import_module
|
||
from django.conf import settings
|
||
|
||
|
||
def new_instance_by_class_path(class_path: str):
|
||
"""
|
||
根据class_path 创建实例
|
||
"""
|
||
parts = class_path.rpartition('.')
|
||
package_path = parts[0]
|
||
class_name = parts[2]
|
||
module = import_module(package_path)
|
||
HandlerClass = getattr(module, class_name)
|
||
return HandlerClass()
|
||
|
||
|
||
class DatabaseModelManage:
|
||
"""
|
||
模型字典
|
||
"""
|
||
model_dict = {}
|
||
|
||
@staticmethod
|
||
def get_model(model_name):
|
||
"""
|
||
根据模型
|
||
"""
|
||
return DatabaseModelManage.model_dict.get(model_name)
|
||
|
||
@staticmethod
|
||
def init():
|
||
handles = [new_instance_by_class_path(class_path) for class_path in
|
||
(settings.MODEL_HANDLES if hasattr(settings, 'MODEL_HANDLES') else [])]
|
||
for h in handles:
|
||
model_dict = h.get_model_dict()
|
||
DatabaseModelManage.model_dict = {**DatabaseModelManage.model_dict, **model_dict}
|