我想更改模型中特定字段的名称:
class Foo(models.Model): name = models.CharField() rel = models.ForeignKey(Bar)
应改为:
class Foo(models.Model): full_name = models.CharField() odd_relation = models.ForeignKey(Bar)
使用 South 最简单的方法是什么?
您可以使用该db.rename_column功能。
db.rename_column
class Migration: def forwards(self, orm): # Rename 'name' field to 'full_name' db.rename_column('app_foo', 'name', 'full_name') def backwards(self, orm): # Rename 'full_name' field to 'name' db.rename_column('app_foo', 'full_name', 'name')
的第一个参数db.rename_column是表名,所以记住Django 如何创建表名很重要:
Django 自动从模型类的名称和包含它的应用程序中派生数据库表的名称。模型的数据库表名是通过将模型的“应用标签”(您在 manage.py startapp 中使用的名称)与模型的类名连接起来而构建的,它们之间使用下划线。
如果您有一个多字的驼峰式模型名称,例如 ProjectItem,则表名将是(即,即使它们是驼峰式app_projectitem,也不会在它们之间插入下划线)。project``item
app_projectitem
project``item