Python 我可以在django中将模型划分为不同的文件吗
目前我所有的模型都在models.py中。它变得很乱。 我可以用像Python 我可以在django中将模型划分为不同的文件吗,python,django,django-models,Python,Django,Django Models,目前我所有的模型都在models.py中。它变得很乱。 我可以用像base\u models.py这样的单独文件,这样我就可以把我不想碰的主要模型放在那里了吗 同样的情况也适用于视图并放在单独的文件夹中,而不是开发新的应用程序是的,这是可行的。但它并不特别漂亮: 将模型设为模块,使目录结构如下所示: - models |- __init__.py |- some_model.py |- some_other_model.py |- ... 现在,神奇之处在于\uuuu init\uuuu.py
base\u models.py这样的单独文件,这样我就可以把我不想碰的主要模型放在那里了吗
同样的情况也适用于视图并放在单独的文件夹中,而不是开发新的应用程序是的,这是可行的。但它并不特别漂亮:
将模型设为模块,使目录结构如下所示:
- models
|- __init__.py
|- some_model.py
|- some_other_model.py
|- ...
现在,神奇之处在于\uuuu init\uuuu.py
和模型中的一些额外功能<代码>\uuuu init\uuuuu.py
:
from some_model import SomeModel
from some_other_model import SomeOtherModel
__all__ = [
'SomeModel',
'SomeOtherModel',
]
一些_model.py:
class SomeModel(models.Model):
class Meta(object):
app_label = 'yourapplabel'
db_table = 'yourapplabel_somemodel'
是的,只需创建一个名为
models
的文件夹,然后将所有分离的模型文件放在该文件夹中。您需要将名为\uuuu init\uuuu.py
的文件放入models
文件夹中,以便将其视为models
模块。在\uuuu init\uuuuu.py
中,使用来自。。。导入…将您想要的名称直接放入yourapp.models
中,否则您必须将其作为yourapp.models.base\u model
或您使用的任何子模块名称导入
此外,在每个模型中,您必须添加一个名为的元属性,以确保您的模型被识别为应用程序的一部分。Acjohnson 55所说的一切,以及您需要在每个模型的元类中指定app_label属性的事实 指向github上实际示例的链接:
您可以像这样分离模型文件:
-------型号/
--------------init.py
--------------usermodels.py
--------------othermodel.py
在初始化中.py:
---------------从用户模型导入*
---------------从其他模型导入*
在*models.py中,添加META类:
--------类元:
--------------app_label='appName'
我通常是这样做的:
# Folder structure:
#==================
# models/
# __init__.py
# products.py
# stocks.py
# In init.py (don't forget the period before model file name)
#===========
from .products import Product
from .stocks import Stock
__all__ = [
'Product',
'Stock',
]
# And run "py manage.py makemigrations" and "py manage.py migrate" as normal
感谢Acjohnson 55的下划线,这是一个清晨。some_model import SomeModel//对我来说,它在我使用时起作用。(dot)那么你如何处理循环导入?