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

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(即,不会在projectitem之间插入下划线,即使它们是驼峰大小写的).

Python相关问答推荐

有什么方法可以修复奇怪的y轴Python matplotlib图吗?

解析讨论论坛只给我第一个用户 comments ,但没有给我其他用户回复

Python中使用Delivercio进行多个请求

这家einsum运营在做什么?E = NP.einsum(aj,kl-il,A,B)

从包含数字和单词的文件中读取和获取数据集

Python中MongoDB的BSON时间戳

理解Python的二分库:澄清bisect_left的使用

如何在具有重复数据的pandas中对groupby进行总和,同时保留其他列

try 与gemini-pro进行多轮聊天时出错

替换字符串中的多个重叠子字符串

有症状地 destruct 了Python中的regex?

为什么sys.exit()不能与subproccess.run()或subprocess.call()一起使用

我如何使法国在 map 中完全透明的代码?

ODE集成中如何终止solve_ivp的无限运行

Pandas—合并数据帧,在公共列上保留非空值,在另一列上保留平均值

从一个系列创建一个Dataframe,特别是如何重命名其中的列(例如:使用NAs/NaN)

cv2.matchTemplate函数匹配失败

形状弃用警告与组合多边形和多边形如何解决

在Django admin中自动完成相关字段筛选

字符串合并语法在哪里记录