目前我所有的模型都在models.py中。变得非常混乱。我可以有一个单独的文件, base_models.py
这样我就可以把我不想碰的主要模型放在那里
视图也是相同的情况并放在单独的文件夹中,而不是开发新的应用程序
目前我所有的模型都在models.py中。变得非常混乱。我可以有一个单独的文件, base_models.py
这样我就可以把我不想碰的主要模型放在那里
视图也是相同的情况并放在单独的文件夹中,而不是开发新的应用程序
是的,这是可行的。虽然它不是特别漂亮:
使模型成为一个模块,因此您的目录结构如下所示:
- models
|- __init__.py
|- some_model.py
|- some_other_model.py
|- ...
现在,神奇之处在于__init__.py
模型中的一些额外内容。__init__.py
:
from some_model import SomeModel
from some_other_model import SomeOtherModel
__all__ = [
'SomeModel',
'SomeOtherModel',
]
some_model.py:
class SomeModel(models.Model):
class Meta(object):
app_label = 'yourapplabel'
db_table = 'yourapplabel_somemodel'
acjohnson55 所说的一切,加上您需要在每个模型的 Meta 类中指定 app_label 属性的事实。
github上实际示例的链接: https ://github.com/stefanfoulis/django-filer/tree/develop/filer/models
是的,只需创建一个名为的文件夹models
,然后在该文件夹中放置所有分离的模型文件。您需要在文件夹中放置一个名为__init__.py
的models
文件,以便将其视为models
模块。在__init__.py
, 中用于from ... import ...
将您想要的名称直接放在 中yourapp.models
,否则您必须将它们导入为yourapp.models.base_model
,或者您使用的任何子模块名称。
此外,在每个模型中,您必须添加一个称为 Meta 属性app_label = 'yourapp'
以确保您的模型被识别为应用程序的一部分。
您可以像这样分隔模型文件:
-------models/
-------------- init .py
-------------- usermodels .py
--------------其他模型.py
在init .py 中:
---------------from usermodels import *
---------------from othermodel import *
和 *models. py , 添加 META 类:
--------class 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