您正在尝试在没有默认值的情况下向用户配置文件添加不可为空的字段“new_field”

新手上路,请多包涵

我知道从 Django 1.7 开始我不需要使用 South 或任何其他迁移系统,所以我只使用简单的命令 python manage.py makemigrations

但是,我得到的只是这个错误:

 You are trying to add a non-nullable field 'new_field' to userprofile without a default;
we can't do that (the database needs something to populate existing rows).

这是模型.py:

 class UserProfile(models.Model):
    user = models.OneToOneField(User)
    website = models.URLField(blank=True)
    new_field = models.CharField(max_length=140)

什么是选项?

原文由 Irmantas Želionis 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 284
2 个回答

您需要提供一个默认值:

 new_field = models.CharField(max_length=140, default='SOME STRING')

原文由 dgel 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果 您处于早期开发周期并且 不关心 您当前的 数据库数据,您可以将其删除然后迁移。但首先你需要清理迁移目录并从表中删除它的行(django_migrations)

 rm  your_app/migrations/*

注意:不要删除迁移文件夹中的_ _ init _ _ .py。

 rm db.sqlite3
python manage.py makemigrations
python manage.py migrate

如果 您之前为 Django 的 Admin Web 应用程序创建了一个超级用户,那么您可能需要再次创建该用户。

原文由 Tomasz 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏