更改 django 中的模型会导致数据库损坏?

发布于 2024-08-27 05:39:15 字数 237 浏览 6 评论 0原文

我在 models.py 文件中添加和删除了字段,然后运行 ​​manage.pysyncdb。通常我必须退出 shell 并重新启动它,然后才能使syncdb 执行任何操作。即使在那之后,我在尝试访问管理页面时遇到错误,似乎我添加的某些新字段仍然没有显示在模型中:

Caught an exception while rendering: no such column: mySite_book.Title

I have added and removed fields in my models.py file and then run manage.py syncdb. Usually I have to quit out of the shell and restart it before syncdb does anything. And then even after that, I am getting errors when trying to access the admin pages, it seems that certain new fields that I've added still don't show up in the model:

Caught an exception while rendering: no such column: mySite_book.Title

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

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

发布评论

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

评论(3

把昨日还给我 2024-09-03 05:39:15

Django 不会为您执行数据库迁移,即,如果您添加新字段,Django 不会修改您的数据库架构。

您可以:

  1. 删除已更改的表并再次执行syncdb。当您正在开发应用程序并且数据库中没有任何真实数据时,这是合理的。
  2. 使用诸如 South 之类的迁移工具来执行数据库迁移(如 hibernate 更新脚本)。
  3. 手动编辑数据库并添加/删除先前存在的表的适当字段。

Django does not perform database migration for you, i.e., if you add new fields, Django won't modify your database schema.

You can either:

  1. Drop the tables that changed and perform syncdb again. This is reasonnable when you are developing your application and you don't have any real data in your database.
  2. Use a migration tool like South that performs database migration (like hibernate update script).
  3. Edit the database by hand and add/delete the appropriate fields for the previously existing tables.
野生奥特曼 2024-09-03 05:39:15

对我来说,(只要您使用测试数据执行此操作,而不是在生产环境中执行此操作),只需删除 test.db 并执行新的 ./manage.pysyncdb 就容易得多。仅供思考...

For me, (so long as you're doing this with test data, and not doing this in a production environ) it's alot easier to just blow away the test.db and do a new ./manage.py syncdb. Just food for thought...

紧拥背影 2024-09-03 05:39:15

为了扩展@Barthelemy的答案,有几个 Django 迁移工具

Just to expand on @Barthelemy's answer, there are several Django migration tools:

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