Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我可以在django中将模型划分为不同的文件吗_Python_Django_Django Models - Fatal编程技术网

Python 我可以在django中将模型划分为不同的文件吗

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

目前我所有的模型都在models.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)那么你如何处理循环导入?