django - Django 模型/管理器依赖
问题描述
当按照我找到的文档和示例中显示的方式使用自定义模型管理器时,自定义管理器与模型放置在相同的源文件中。
我的 models.py 文件有一个基类和四个子类,基类有几个静态方法来提供一些常见的查询。我需要添加很多自定义查询。我更愿意将这些放在自定义模型管理器中,它是每个模型管理器子类的基类。我还希望能够将模型管理器分离到一个名为 manager.py 的单独源文件中,以使代码不那么混乱。
问题是模型和管理器之间存在循环依赖关系。
有没有办法通过名称而不是实际的模型管理器类将管理器设置为“对象”变量?或者也许有其他方法可以将代码放入两个单独的文件中?
models.py
class MyBaseModelClass(models.Model): (abstract)
list_of_values (Many to Many Field)
class class SubclassA(MyBaseModelClass):
objects = SubclassAManager()
# list_of_values pulled from external system
class class SubclassB(MyBaseModelClass):
objects = SubclassBManager()
# list_of_values manually added by the user in the UI and stored in the DB
class class SubclassC(MyBaseModelClass):
objects = SubclassCManager()
# list_of_values derived from subclass fields and not stored in the DB
class class SubclassD(MyBaseModelClass):
objects = SubclassDManager()
# list_of_values derived from subclass fields and not stored in the DB
managers.py
class MyCustomBaseManager(models.Manager):
# Does custom queries that do calculations and other data manipulations that are common to all of the
# Subclasses. Note that MyBaseModelClass can't have a Manager because it is Abstract.
class SubclassAManager(MyCustomBaseManager):
class SubclassBManager(MyCustomBaseManager):
class SubclassCManager(MyCustomBaseManager):
class SubclassDManager(MyCustomBaseManager):
解决方案
推荐阅读
- ios - 地理定位不适用于我的反应原生 iOS 模拟器
- windows - Windows - 查找前缀为 10 个随机字符的所有文件,后跟 images.aspx
- excel - 使用 pd.read_excel 指定要从 excel 中读取的行
- javascript - 禁用对文本区域或按键输入的焦点的最佳方法是什么?
- .net - 需要将 key=value 文本列表转换为 dot net core 中的 JSON 流
- python - 不支持嵌套重命名器,如何重建此代码?
- python-3.x - 从 sqlite 检索图像并添加到列表框 tkinter python
- linux-kernel - 从内核调用 local_irq_disable() 也会禁用用户空间中的本地中断?
- javascript - 有什么方法可以在源代码中显示动态标签?
- android - 如何为约束布局组提供垂直边距?