Django(南部):改变模型应用

时间:2013-09-23 15:01:34

标签: django django-models django-south

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

djangoproject
    /blog
        models.py

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

djangoproject
    /blog
        xxx
    /all_models
        models.py

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

怎么做?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

据我所知,南方不支持表重命名,所以你应该以三向迁移的方式进行:

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

您可以阅读更多关于第二种方式的in south docs