我使用 Django 1.8.7 和 PostgreSQL 并具有以下模型:
class Permission(models.Model):
name = models.CharField(max_length=255)
template = models.ForeignKey(Template, related_name='permissions')
我添加了 RenameModel 操作:
migrations.RenameModel(
old_name='Permission',
new_name='TemplatePermission',
),
看起来一切正常,但 TemplatePermission.id 字段的序列名称仍然是 myapp_permission_id_seq:
postgres=# \d+ myapp_templatepermission
Table "public.myapp_templatepermission"
Column | Type | Modifiers | Storage | Description
-------------+------------------------+--------------------------------------------------------------+----------+-------------
id | integer | not null default nextval('myapp_permission_id_seq'::regclass) | plain |
...
重命名序列有正确的方法吗?它是 Django 中的错误吗(我发现 Django 1.8.x 和 Oracle 的错误报告和补丁非常相似)?
最佳答案
在我的例子中,我手动创建了 sql 迁移脚本。但是,如果您决定使用不同的数据库,这可能不起作用。
operations = [
migrations.RenameModel(
old_name='Permission',
new_name='TemplatePermission',
),
migrations.RunSQL('alter sequence myapp_permission_id_seq rename to myapp_templatepermission_id_seq;'),
]
关于python - django.db.migrations.RenameModel 和 AutoField 序列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34515818/