我只是想出了使用延迟导入实现它的另一种实际上更规范的方法,我最初的问题是试图在 init 函数中导入模型:
from logging import Handlerclass DBHandler(Handler,object): model_name = None def __init__(self, model=""): super(DBHandler,self).__init__() self.model_name = model def emit(self,record): # instantiate the model try: model = self.get_model(self.model_name) except: from logger.models import GeneralLog as model log_entry = model(level=record.levelname, message=self.format(record)) log_entry.save() def get_model(self, name): names = name.split('.') mod = __import__('.'.join(names[:-1]), fromlist=names[-1:]) return getattr(mod, names[-1])


