gpt4 book ai didi

django - Django migrations.AddField 中外键的默认值

转载 作者:行者123 更新时间:2023-12-04 04:51:26 25 4
gpt4 key购买 nike

使用 migrations ,我需要向模型添加一个新字段(外键)。我知道可以通过以下方式完成:

    migrations.AddField(
model_name='MyModel',
name='state',
field=models.ForeignKey(null=True, related_name='mymodel_state', to='msqa_common.MyModelState'),
),

但是,我不希望我的字段可以为空。相反,我想为它使用一个默认值,对应于名称为“可用”的 MyModelState 的 id(id 值在不同的机器上可能会改变)。表 MyModelState 的这个“可用”值是在之前的迁移脚本中插入到数据库中的,因此它确实存在。

我想我应该做这样的事情:
    migrations.AddField(
model_name='MyModel',
name='state',
field=models.ForeignKey(null=False, default=available_state_id, related_name='mymodel_state', to='msqa_common.MyModelState'),
),

我的问题:我怎样才能得到 available_state_id在我的迁移脚本中?

最佳答案

你不能直接做。推荐的这样做的方法是创建一个迁移来添加 null=True,然后添加一个数据迁移,使用 Python 或 SQL 更新所有现有的指向 available_state_id ,然后进行第三次迁移,将其更改为 null=False。

关于django - Django migrations.AddField 中外键的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36280253/

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