2013-09-23 65 views
0

我已经在应用程序中定义了一些模型,称之为“博客”。Django(南):更改模型应用程序

djangoproject 
    /blog 
     models.py 

我现在想改变模型的位置,例如把它们放在这里:

djangoproject 
    /blog 
     xxx 
    /all_models 
     models.py 

但从代码来看,这是非常容易的,但我想会有问题上由于Django和South创建的所有表格现在都被称为blog_postsblog_comments,因此Django依赖于此命名约定,并且我不想丢失数据库中已存在的数据。

如何做到这一点?

回答

4

最简单的事情是不要打扰改变表格,但代码。在每个模型的Meta类中,放置声明db_table = "blog_tablename",并且Django会毫无问题地发现它们。

1

你可以用两种方法解决这个问题。 第一个也是最容易的一个就是在每个模型的Meta类中提供一个db_table。另一个是创建迁移来应用更改。

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

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

你可以读到更多一点关于第二种方式in south docs

相关问题