Django 迁移数据库列宽

Django migrate db column width

在 Django 1.10 中,username max length was increased from 30 to 150 characters. 我有一个 Django 1.9 应用程序,我想迁移以利用它。

我已将 Django 安装升级到 1.10。当我 python manage.py makemigrations 时,我没有检测到任何变化。

如果我尝试将现有用户名编辑为超过 30 个字符,我会在日志中得到 django.db.utils.DataError: value too long for type character varying(30)

我宁愿使用 Django 的内置迁移来处理这个问题,而无需在 postgres 中进行修改。如何触发迁移以修改数据库列宽?

我想在模型中添加一个一次性字段,迁移并再次删除它,但这似乎很老套,而且似乎应该有比这更好的处理方法。

Django 文档对此似乎保持沉默。

我最终向模型添加了一个一次性字段,运行 makemigrations,删除了该字段,再次 运行 makemigrations,然后 运行 migrate。我收到这条消息:

Running migrations:
  Applying foo.0033_userprofile_throwaway... OK
  Applying foo.0034_remove_userprofile_throwaway... OK
  Applying auth.0008_alter_user_username_max_length... OK

所以也许有更好的方法来做到这一点。不管怎样,迁移后我修改了一个用户名超过30个字符,它执行得很好。