我试图为一系列Django模型重构代码,但这对于一般python导入是有效的。让我解释一下我的设置和问题(完全是假的类等)
APP_ROOT/
|- __init__.py
|- tests/
|- urls.py
|- models/
| |- __init__.py
| |- BunchOfModels.py
| |- SomeMoreModels.py
\- admin.py
在models.__init__
中:
这允许我执行以下操作:
from APP_ROOT.models import SuperModel
# Where SuperModel is in SomeMoreModels
问题是类repr是:
<class 'project.APP_ROOT.models.SomeMoreModels.SuperModel'>
把外键弄乱了。在
我的问题:
有没有办法让我所有的课程都有一个更像:
<class 'project.APP_ROOT.models.SuperModel'>
而不为每个类手动重载__repr__
。我甚至不确定这是否能解决问题,即使解决了,也不会很好地移植。在
或者我需要回去使用一个大的,丑陋的文件。。。在
正如我已经说过的,Django不建议您将模型分散到多个文件中。但这可以解决你的问题
app_label
attr应该在每个模型的Meta
类中。您还可以从基元类中inheritMeta
。在另一种方法是将经理、效用函数移到
models.py
之外(如果你有)。但在这种情况下,你可能会得到循环导入。在相关问题 更多 >
编程相关推荐