gpt4 book ai didi

Django South - 创建非空外键

转载 作者:行者123 更新时间:2023-12-03 18:23:21 26 4
gpt4 key购买 nike

我有一个模型

class Mystery(models.Model):
first = models.CharField(max_length=256)
second = models.CharField(max_length=256)
third = models.CharField(max_length=256)
player = models.ForeignKey(Player)

我添加了播放器外键,但是当我尝试使用 South 迁移它时,似乎我无法使用 null=False 创建它。我有这个消息:

The field 'Mystery.player' does not have a default specified, yet is NOT NULL. Since you are adding this field, you MUST specify a default value to use for existing rows. Would you like to:
1. Quit now, and add a default to the field in models.py
2. Specify a one-off value to use for existing columns now



我使用这个命令:

manage.py schemamigration myapp --auto



非常感谢 !

最佳答案

这最好在 3 次迁移中完成。

Step 1. 创建新模型并允许玩家为空:player = models.ForeignKey(Player, null=True)
步骤 2. 运行 ./manage.py schemamigration <app> --auto
步骤 3. 运行 ./manage.py datamigration <app> set_default_players
步骤 4. 在 <app>/migrations/<number>_set_default_players.py 中向前和向后更新使用您喜欢的任何逻辑来设置默认播放器。确保每个Mystery对象的值为 player .

步骤 5. 更新 Mystery模型使 playernull=False .

步骤 6. 运行 ./manage.py schemamigration <app> --auto
步骤 7. 运行 ./manage.py migrate <app>

关于Django South - 创建非空外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16210272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com