使用 django 迁移,如何更改 auth_permission 字段长度?
Posted
技术标签:
【中文标题】使用 django 迁移,如何更改 auth_permission 字段长度?【英文标题】:Using django migrations, how do I alter auth_permission field length? 【发布时间】:2015-06-09 14:39:19 【问题描述】:我刚刚升级到 Django 1.7,我的一些迁移遇到了一些问题。在升级之前,我使用 South 来处理数据迁移,其中一个迁移是更改 auth_permissions 中 name 字段的字段长度。
如何使用 django migrations >= 1.7 编写相同的迁移?
【问题讨论】:
【参考方案1】:还需要这种改变吗?该字段的长度长期以来一直是一个已知问题,但错误跟踪器中的最新更新显示它是quintupled in length。
如果您仍然希望它更长,您可能想要this。
编辑:暂时放弃。编写存储在应用程序 A 中但应用于应用程序 B 的迁移涉及比我有时间更深的猴子。
建议路线:
在您自己的一个应用程序中的迁移中使用 RunSQL 手动调整字段。
Fork Django 1.7.8,添加 cmets 中描述的身份验证迁移,针对该 github 存储库进行 pip 安装。
使用 Django 1.8,其中this change is standard。
【讨论】:
不确定这是否包含在 1.7.8 版本中。无论如何,我不知道如何使用数据迁移来修改 auth_permissions 模型。 也许像 this 这样的东西有一个 max_length 变化? 由于 auth_permission 在不同的应用程序中,我不能使用它。它无法找到合适的模型。 在一个作为概念证明的玩具项目中,我能够使其与python manage.py makemigrations --empty auth
一起制作文件和 these 内容。我仍在尝试在更易于维护的地方编写迁移,但它涉及overriding some inside logic。
啊,这很可能是我需要做的。早上会检查。干杯!【参考方案2】:
权限名称长度有问题 使用 Django 1.8 Python 3.4.4 (这些是 mysql 5.6+ 使用的最新版本) 改变了 base\schema.py
在 _alter_field(...) 中
# ********* altered - start
fragment, other_actions = self._alter_column_type_sql(table=model._meta.db_table, old_field=old_field, new_field=new_field.column, new_type=new_type)
# ******** end
将定义更改为:
def _alter_column_type_sql(self, table, old_column, column, type):
就是这样。所有迁移工作
【讨论】:
以上是关于使用 django 迁移,如何更改 auth_permission 字段长度?的主要内容,如果未能解决你的问题,请参考以下文章