我想更改模型中特定字段的名称:
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最简单的方法是什么?
我想更改模型中特定字段的名称:
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
功能.
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 creates table names是如何:
Django会根据模型类和包含它的应用程序的名称自动派生数据库表的名称.模型的数据库表名是通过连接模型的"应用程序标签"——您在管理中使用的名称——来构造的.py startapp——指向模型的类名,它们之间带有下划线.
如果您有一个多字、驼峰大小写的模型名称,如ProjectItem,表名将是app_projectitem
(即,不会在project
和item
之间插入下划线,即使它们是驼峰大小写的).