0

我在应用程序中定义了一些模型,称之为“博客”。

djangoproject
    /blog
        models.py

我现在想更改模型位置,例如将它们放在这里:

djangoproject
    /blog
        xxx
    /all_models
        models.py

从代码的角度来看,这很简单,但我猜数据库上会有问题,因为现在调用了 Django 和 South 创建的所有表blog_posts blog_comments,Django 依赖于这个命名约定,我不想丢失数据库中已经存在的数据。

这个怎么做?

4

2 回答 2

4

最简单的事情是根本不用更改表格,而是更改代码。在Meta您的每个模型的类中,放置声明db_table = "blog_tablename",Django 会毫无问题地找到它们。

于 2013-09-23T15:04:08.517 回答
1

您可以通过两种方式解决此问题。第一个也是更简单的方法是在每个模型的 Meta 类中提供一个 db_table。另一种是创建迁移以应用更改。

据我所知南不支持表重命名,所以你应该把它作为一个三向迁移:

  • 移动 de 模型,并创建迁移(现在您有新旧表)
  • 创建一个数据迁移并迭代前一个表,将对象复制到以后
  • 删除以前的模型,并为其创建迁移。

您可以在南文档中阅读更多关于第二种方式的信息

于 2013-09-23T16:31:02.570 回答