在 Django 中重命名模型(表)
Posted
技术标签:
【中文标题】在 Django 中重命名模型(表)【英文标题】:Renaming models(tables) in Django 【发布时间】:2015-01-26 07:30:48 【问题描述】:所以我已经在 Django 中为我的数据库创建了模型,但现在想重命名模型。我已经更改了 Meta 类中的名称,然后进行迁移/迁移,但这只会创建全新的表。
我也尝试过架构迁移,但也没有工作,我使用的是 Django 1.7
这是我的模型
class ResultType(models.Model):
name = models.CharField(max_length=150)
ut = models.DateTimeField(default=datetime.now)
class Meta:
db_table = u'result_type'
def __unicode__(self):
return self.name
干杯
【问题讨论】:
【参考方案1】:Django 不知道你在做什么。默认情况下,它将删除旧表并创建新表。 需要创建一个空的migration,然后使用这个操作(需要自己写):
https://docs.djangoproject.com/en/stable/ref/migration-operations/#renamemodel
类似这样的:
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('yourappname', '0001_initial'),
]
operations = [
migrations.RenameModel("OldName", "NewName")
]
【讨论】:
我认为我的 django 不同步,错误“您的模型具有尚未反映在迁移中的更改,因此不会应用。运行“manage.py makemigrations”以创建新的迁移,然后重新运行 'manage.py migrate' 以应用它们”我已经删除了所有 0001_initial.py 然后用我的新类创建了一个迁移.. 我想重命名一个表,因为我正在重命名应用程序。我怎样才能做到这一点? 所以要创建一个空迁移:./manage.py makemigrations --empty myapp
.
NameError: name 'operations' is not defined
。该文档没有任何示例,因此不是很有用。
在this question之后,上面的operations
(列表内)似乎应该是migrations
。我改变了那个词,我的代码就起作用了。以上是关于在 Django 中重命名模型(表)的主要内容,如果未能解决你的问题,请参考以下文章