ecu*_*ver 22 python django design-patterns django-models django-managers
这是一个非常简单的django模式问题.我的经理代码通常存在于models.py中,但是当models.py非常庞大时会发生什么?是否有任何其他替代模式可让您的经理代码在models.py中生存,以实现可维护性并避免循环导入?
可能会问一个问题,为什么models.py是如此巨大,但让我们假设它的大小和实用性的广度是合理的.
小智 28
我更喜欢将models.py中的模型和managers.py中的管理器(forms.py中的表单)保存在同一个应用程序中.对于更通用的管理器,我更喜欢将它们保留在core.managers中,如果它们可以重用于其他应用程序.在我们的一些较大的应用程序中,models/modelname.py将包含一个管理器和模型代码似乎并不坏.
使用大量模型最好的方法是使用django模块,只需创建一个名为models的文件夹.将旧的models.py移动到此模型文件夹中,然后重命名__init__.py.这将允许您将每个模型分成此模型文件夹内的更具体的文件.
然后,您只需要将每个模型导入到您__init__.py的命名空间中.
因此,例如,您可能希望将其分为:
yourapp/
models/
__init__.py # This file should import anything from your other files in this directory
basic.py # Just an example name
morespecificmodels.py # Just an example name
managers.py # Might want to separate your manager into this
Run Code Online (Sandbox Code Playgroud)
然后你__init__.py可以只是:
from basic import * # You should replace * with each models name, most likely.
from managers import YourManager # Whatever your manager is called.
Run Code Online (Sandbox Code Playgroud)
这是我在模型文件变得庞大时使用的结构,但是我尝试尽可能多地将事物分成更多可插拔的应用程序 - 所以我很少使用它.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
3546 次 |
| 最近记录: |