从sqlite3删除表后Django South迁移未重新创建模型

2024-04-19 21:00:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我是个新手,也是Django和South的新用户。我创造了一个新模型(审批.py)在我的models包中(并将其链接到model的init.py中),并且能够成功地迁移我的应用程序以接受新模型。然而,当我试图在管理站点上寻找该模型时,我得到了一个403禁止错误,因为没有应用监护人权限。 因此,我直接从sqlite命令提示符中删除了表,并再次尝试执行以下命令:

   $python manage.py syncdb 
   ...
   (use ./manage.py migrate to migrate these)

   $python manage.py schemamigration myapp --auto
   Nothing seems to have changed.

   $python manage.py migrate myapp
   Running migrations for myapp:
   - Nothing to migrate.
    - Loading initial data for myapp.
   Installed 0 object(s) from 0 fixture(s)

但是,当我签入sqlite命令提示符时,不再创建表。而且,我已经在我的admin.sites.url,但它不再显示它并给出错误:

^{pr2}$

我已经检查了StackOverflow上发布的关于使用South进行迁移的所有其他问题,特别是关于“似乎什么都没有改变”的错误。然而,我无法用这些解决方案来解决我的问题。在

我恳请您帮忙:

  • 从头开始重新创建审批模型并成功迁移
  • 或者修复现有的审批模型。在

谢谢。在


Tags: todjango用户py模型forsqlitemanage
2条回答

您已经创建了一个创建新表的迁移,根据South的历史管理,您已经运行了这个迁移。South不知道数据库的实际更改。在

您需要做的是在创建新表之前恢复到迁移。如果你查看你的apps文件夹,你会发现一个migrations文件夹,里面有一些迁移文件。如果您在migration 0005中创建了新表,则需要(可选)向后迁移到0005,然后需要伪造向后迁移到0004并再次迁移:

manage.py migrate myapp 0005
manage.py migrate myapp 0004  fake
manage.py migrate myapp

最后,经过多次尝试和错误,一些非常简单的事情对我奏效了。我在南迁中运气不好。因此,当我从sqlite3中手动删除表时,我决定在sqlite3中手动创建表,一切都非常顺利。 我在sqlite3提示符上使用了下面的脚本,它解决了我的问题,我能够通过我的管理站点正确地访问approval页面,并对其执行所有CRUD操作。在

CREATE TABLE "myapp_approval" ("id" integer NOT NULL PRIMARY KEY, "desc" varchar(256) NOT NULL);

感谢大家的帮助和支持!在

相关问题 更多 >