Django - 如何使用 South 重命名模型字段?

2023-12-25

我想更改模型中特定字段的名称:

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 http://south.readthedocs.org/en/latest/databaseapi.html#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 创建表名 https://docs.djangoproject.com/en/stable/ref/models/options/#table-names:

Django 自动从模型类和包含它的应用程序的名称中派生出数据库表的名称。模型的数据库表名称是通过将模型的“应用程序标签”(您在 manage.py startapp 中使用的名称)连接到模型的类名称(它们之间使用下划线)来构造的。

如果您有一个多字、驼峰式命名的模型名称(例如 ProjectItem),则表名称将为app_projectitem(即,下划线不会插入project and item即使它们是骆驼皮的)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django - 如何使用 South 重命名模型字段? 的相关文章

随机推荐