我得到了带有大量子应用程序的巨大 Django 应用程序。目前,我正在一个子应用程序中重新设计模型,所以我遇到了一个......问题。我有大量分离的丑陋功能可用于模型。基本上,它有点像:
def get_some_things(...):
def postprocess(...):
pass
def preprocess(...):
pass
preprocess(...)
x = MyModel.objects.....get(1)
return postprocess(x, ...)
而且我有很多这样的功能,真的很丑!在当前代码中使用它很丑陋(如DatabaseAccessor.get_db().django_kitty().get_some_things(...)
)。所以,我的想法是让开发人员能够像这样使用这些功能:
MyModel.get_some_things(...)
甚至像这样:
MyModel.objects.get_some_things(...)
但!我有太多的功能,所以我不能在model.py中写它。所以,我有几个想法:
- 创建 model_mymodel.py 并使用其中的所有函数和静态函数定义我的模型。但是......我不确定,我需要把它放在模型课上吗?
- 创建 mymodel_manager.py 并为 mymodel 创建模型管理器,在此处定义函数。但是......我的一些“函数”应该只返回字典、列表甚至数字。我想知道,让模型管理器能够返回除 QuerySet 之外的东西在意识形态上是错误的吗?
- 重写
__getattr__
MyModel 类并动态加载模块等functions_common.py
,functions_things.py
将收集的函数存储到字典中并需要调用?