发布将Django从1.8升级到1.9的问题

2024-10-02 14:24:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将Django从1.8升级到1.9,但是当我运行迁移时,它抛出了错误。下面是堆栈跟踪。在

Stack trace

这是因为django1.9中引入了一个新的迁移,它将auth username unicity逻辑从表单移到模型[ref:ticket]。但是,在升级之前,我们已经实现了这里提到的一点hack,将用户名字符长度从默认的30个字符长度增加到75个字符。现在,当我运行迁移时,它只考虑用户名的前30个字符,并抛出完整性错误。有办法吗?我不想使用自定义身份验证模型,因为这涉及到很多复杂的问题。在


Tags: django模型authref表单stack堆栈错误
1条回答
网友
1楼 · 发布于 2024-10-02 14:24:35

首先,如果您还没有迁移到migration 0006。在

./manage.py migrate auth 0006_require_contenttypes_0002

然后在发布后升级到Django 1.10(或1.11 LTS),并假迁移0007。在

^{pr2}$

此迁移尝试将列从75个字符减少到30个字符,因此必须伪造。在

然后,您可以运行auth的其余迁移:

./manage.py migrate auth

特别是,从django1.10迁移0008将increase the max length of the username到150个字符。这意味着您可以删除任何可能导致问题的用户名最大长度更改的黑客行为。在

为了安全起见,我不建议伪造0007并升级到django1.9。我不知道伪造迁移和保持用户名长度的黑客行为是否有效,或者会引起我没有想到的问题。在

相关问题 更多 >