syncdb 忽略导入的模型

发布于 2024-10-31 22:11:07 字数 909 浏览 0 评论 0原文

我有一个项目,结构如下:

project/
   __init__.py
   db/
      models/
         __init__.py
         article.py
         project.py
         ontology/
            __init__.py
            coded.py

它有点大,但这就是想法。 models.__init__.py 包含:

from db.models.article import *
from db.models.project import *
from db.models.ontology.coded import *

运行syncdb时,它会忽略models.__init__.py中导入的所有模型。没有 ImportError's,并且当向 __init__.py 添加打印语句时,它会愉快地打印导入模型(在运行syncdb时)。

__init__.py定义的模型仍然可以工作。

这是为什么?我可以强制syncdb 考虑我导入的模型吗?

编辑:应用程序位于 INSTALLED_APPS 中:

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'amcatnavigator.navigator',
'amcatnavigator.db',
)

谢谢!

I have a project, structured like this:

project/
   __init__.py
   db/
      models/
         __init__.py
         article.py
         project.py
         ontology/
            __init__.py
            coded.py

It's a little bit bigger, but that's the idea. models.__init__.py contains:

from db.models.article import *
from db.models.project import *
from db.models.ontology.coded import *

When running syncdb, it ignores all models imported in models.__init__.py. There are no ImportError's, and when adding a print statement to the __init__.py, it happily prints the import models (while running syncdb).

Models defined in __init__.py work though.

Why is that? Can I force syncdb to account for my imported models?

Edit: The application is in INSTALLED_APPS:

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'amcatnavigator.navigator',
'amcatnavigator.db',
)

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

合约呢 2024-11-07 22:11:07

您需要将 app_label = 'db' 添加到模型的 Meta 内部类中。

You need to add app_label = 'db' to your models' Meta inner classes.

转身泪倾城 2024-11-07 22:11:07

根据南方(syncdb)文档: http://south.aeracode.org/docs/tutorial /part1.html 它只会为 settings.py 文件中 INSTALLED_APPS 部分中的模型创建表。如果模型正在使用,但它已更改并且您不想丢失任何数据 - 使用迁移: http://south.aeracode.org/docs/tutorial/part1.html#the-first-migration

更新:据我所知,Django 的设计不会找到其中的模型不同的目录:http://code.djangoproject.com/ticket/14007 你可能想要使用app_label

更新:app_label 文档:http://docs.djangoproject。 com/en/dev/ref/models/options/#app-label

According to South (syncdb) docs: http://south.aeracode.org/docs/tutorial/part1.html It will create tables only for those models that are in INSTALLED_APPS section in settings.py file. If model is being used, but its changed and you don't want to lose any data - use migrations: http://south.aeracode.org/docs/tutorial/part1.html#the-first-migration

UPDATE: As far as i looked Django by design wont find the models within different directories: http://code.djangoproject.com/ticket/14007 you might want to use app_label

UPDATE: app_label docs: http://docs.djangoproject.com/en/dev/ref/models/options/#app-label

成熟稳重的好男人 2024-11-07 22:11:07

您的 db 模块似乎未包含在设置的 INSTALLED_APPS 列表中。对于其他变体来说,信息还不够。

Looks like your db module is not included in the INSTALLED_APPS list in your settings. It is not enough information for other variants.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文