我将执行以下操作:
myproject/
...
app1/
views.py
__init__.py
models.py
submodels/
__init__.py
model1.py
model2.py
app2/
views.py
__init__.py
models.py
submodels/
__init__.py
model3.py
model4.py
然后
#myproject/app1/models.py:
from submodels/model1.py import *
from submodels/model2.py import *
#myproject/app2/models.py:
from submodels/model3.py import *
from submodels/model4.py import *
但是,如果你没有充分的理由,请将model1和model2直接放在app1 / models.py中,并将model3和model4直接放在app2 / models.py中
这是app1 / submodels / model1.py文件:
from django.db import models
class Store(models.Model):
class Meta:
app_label = "store"
因此,请更正你的model3.py文件:
from django.db import models
from app1.models import Store
class Product(models.Model):
store = models.ForeignKey(Store)
class Meta:
app_label = "product"
对于Django 1.9上的任何人,框架现在都支持它,而无需定义类元数据。
https://docs.djangoproject.com/zh-CN/1.9/topics/db/models/#organizing-models-in-a-package
注意:对于Django 2,它仍然相同
该manage.py startapp
命令将创建一个包含models.py文件的应用程序结构。如果你有许多模型,将它们组织在单独的文件中可能会很有用。
为此,创建一个模型包。删除models.py
并创建一个myapp/models/
目录,其中包含一个__init__.py
文件和用于存储模型的文件。你必须将模型导入__init__.py
文件中。
因此,对于你来说,对于像
app1/
views.py
__init__.py
models/
__init__.py
model1.py
model2.py
app2/
views.py
__init__.py
models/
__init__.py
model3.py
model4.py
你只需要做
#myproject/app1/models/__init__.py:
from .model1 import Model1
from .model2 import Model2
#myproject/app2/models/__init__.py:
from .model3 import Model3
from .model4 import Model4
禁止导入所有类的注意事项:
显式导入每个模型而不是使用它们from .models import *
的优点是不会使名称空间混乱,使代码更具可读性并保持代码分析工具有用。
我正在尝试在Django 1.3开发环境中提供静态文件。
这是我的设定
...
STATIC_ROOT = '/home/glide/Documents/django/c@R_426_2419@/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
'/static/',
)
...
我的urls.py
urlpatterns = patterns('',
...
url(r'^static/(?P<path>.*)$', 'django.views.static.serve',
{'document_root', settings.STATIC_ROOT}
),
...
);
我的/ home / glide / Documents / django / c@R_426_2419@ / static /目录就像
css
main.css
javascript
image
尝试访问http://127.0.0.1:8000/static/css/main.css时出现404错误。
我是否必须分别为CSS,JavaScript和图像指定模式?