python - django.db.migrations.RenameModel 和 AutoField 序列名称

标签 python django postgresql migration

我使用 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/

相关文章:

python - 从 python 日志记录中捕获 "Out of memory error"

python:从列表中创建元组列表

python - 使用Python创建二维坐标

python - django - 将列表转换回查询集

sql - ORDER BY 有/没有 ROW_NUMBER() 的差异

python - 在其他 df Pandas 下添加 df

django - 从函数内部创建并返回默认 ImageFieldFile

database - 基于 django 中另一个字段的唯一值字段

macos - 在 Mac 中通过网络访问 postgresql 服务器

javascript - Sequelize 与 PostgreSQL 的关系 (generator-sql-fullstack)