我有一个Django项目,它有两个应用程序(一个作为调试测试创建)。对于调试测试,syncdb确实将模型放在数据库中,但对于另一个则没有。
settings.INSTALLED_APPS
。for model in get_models():
models.append(model)
pass models to a template
非常感谢任何帮助。我认为这是微不足道的事情,但我想要尝试的事情。
谢谢,
更新:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.admin',
'techtree',
'froink',
)
结构:
project/techtree/models.py
(包含测试模型)project/techtree/models/__init__.py
(如here所述)project/techtree/models/typ.py
(包含型号类型)有更多与最后一行相同类型的文件。
答案 0 :(得分:2)
您是否遗漏了第二个应用的模型目录中的__init__.py
文件?这意味着它无法在路径上找到。
您能告诉我们您的INSTALLED_APPS
设置以及您的目录结构吗?
看看你的目录结构,我想我猜错了。
my_app/
__init__.py
my_module.py
my_module/
__init__.py
my_python_file.py
使用上述虚构的目录结构,当我执行以下操作时会导入什么内容?
from my_module import *
是否导入my_module.py
内的所有内容或my_module
目录中的所有内容?
使用一个或另一个。不是都。将所有内容放在models.py
文件中,除非您有充足的理由拥有models
目录,否则请删除该目录。你可能没有。
答案 1 :(得分:2)
我遇到了同样的问题,我花了好几个小时才弄清楚如何将模型分组到一个单独的目录中。继承人怎么做,
使用app_label参数为每个模型添加元类。
from django.db import models
class Test(models.Model):
class Meta:
app_label = 'myapp'
这是我发现这个的地方, Placing Django Models In Separate Files
但是这样做还不够,你必须在模型目录中的__init__.py
文件中导入模型,如下所示,
from YourModelFile import *
答案 2 :(得分:0)
Django通常只搜索models.py
文件。如果您有models.py
和名为models
且带有__init__.py
文件的模块子目录,则无法正确识别模型(我的猜测)。您可以执行以下两种操作之一:
models.py
OR
models.py
中的techtree
。将models.py
文件添加到您保留模型定义的techtree.models
应用中。将'techtree.models'
添加到INSTALLED_APPS
(仅'techtree'
是不够的。)希望其中一个答案有所帮助。
答案 3 :(得分:0)
检查文件名是
__init__.py
而不是
init.py