Python 南方找不到我的模特

Python 南方找不到我的模特,python,mysql,django,django-south,database-migration,Python,Mysql,Django,Django South,Database Migration,我在尝试将south添加到现有django项目时遇到困难。以下是我的情况: 我的项目叫做警报。以下是我的文件夹结构: djangoprojects/ alerts/ manage.py alerts/ __init__.py urls.py views.py models.py wsgi.py settings.p

我在尝试将south添加到现有django项目时遇到困难。以下是我的情况:

我的项目叫做警报。以下是我的文件夹结构:

djangoprojects/
    alerts/
        manage.py
        alerts/
            __init__.py
            urls.py
            views.py
            models.py
            wsgi.py
            settings.py
        common/
            __init__.py
            models/
                __init__.py
                models.py
文件alerts/alerts/models.py包含以下内容:

from common.models.models import *
换句话说,alerts/alerts/models.py所做的唯一一件事就是从alerts/common/models/models.py导入“真实”模型,其中有大量从过去的项目中创建的模型

我还有一个MYSQL数据库,我称之为“现有_数据库”。这是与我过去项目中的模型对应的数据库,该项目在另一台机器上运行。在另一台机器上,我使用mysqldump获取该数据库的sql文件,并将其复制到我的新机器上。然后我直接使用mysql在我的新机器上创建现有的_数据库。因此,现有的数据库应该与alerts/common/models/models.py中的模型匹配

所以接下来我浏览了文档,试图将south添加到alerts项目中。这就是我所做的:

  • 我在alerts/alerts/settings.py中向已安装的应用程序添加了“南方”和“警报”。我不知道为什么我必须在alerts项目内的settings.py中添加“alerts”-您可能认为设置文件位于项目文件夹中就足够了。但是如果我没有明确地添加它,它会抱怨,所以我添加了
  • 我将cd刻录到DjangoProject/alerts并运行了./manage.py syncdb。它说它同步了一些东西,包括南方和警报
  • 然后我运行了./manage.py convert_to_south警报。这就是我遇到问题的地方。它说: 此应用程序没有模型;此命令适用于已具有syncdb'd模型的应用程序。 制作一些模型,然后使用./manage.py schemamigration警报——改为initial
  • 所以我试着运行./manage.py schemamigration alerts——initial。它创建了一个初始迁移,但迁移文件中几乎没有任何内容。它所拥有的只是类迁移。我的真实模型到处都找不到
  • 为了查看它是否能够识别任何新模型,我转到common/models/models.py并添加了一个虚拟模型。然后我运行了./manage.py schemamigration alerts--auto,我得到的响应是“似乎什么都没有改变”。看来它对我的真实模型还是一无所知
  • Ao在这一点上我完全糊涂了。正如我所说,我有一个包含真实数据的现有数据库,我有一组现有的模型代码,这些代码应该准确地表示实际的表结构。我只想开始在我的警报项目中使用它,我需要south,因为我将添加和更改模型


    如何实现这一点?

    尝试在模型的元类中设置“应用程序标签”。我有大量现有模型。我以前的项目不需要这样做。你是说我必须在每个模型上都这样做吗?我想问题是你的应用程序与项目同名,可能尝试重命名其中一个?命名与问题无关。运行“python manage.py startapp appname”创建项目时。它将创建appname项目,并创建appname作为项目中应用程序的名称。如果这是一个问题,那么startapp命令将不会执行此操作。@marc,您必须在以前的项目中执行此操作。Django无法识别在app/models.py之外定义的模型,因为您可以在许多关于将models.py分离到其他几个文件的帖子中找到这一点。最后,您还有一个问题,那就是您的models.py实际上并不在应用程序中,而是在另一个应用程序中名为
    common
    的文件夹中。这是另一个与
    app/models.py->app/models/\uuu init\uuuuu.py+
    不同的地方,所以我并不奇怪它不起作用。尝试将
    common
    添加到已安装的应用程序中。