我想向我已有的模型添加一个名为 color
的新字段。我希望它是唯一的,并且默认情况下它是随机选择的。所以我要做的是:
color = models.CharField(max_length=15, default=random_color, unique=True)
我的random_color
看起来像这样
def random_color():
"""
Returns:
[string] : returns a rgb value in hex string
"""
while True:
generated_color = f'#{random_hex()}{random_hex()}{random_hex()}'
if not MyModel.objects.filter(color=generated_color):
return generated_color
我遵循了与所提供的类似的逻辑here .
现在这种方法的问题是没有可以开始寻找的颜色
。
而且我还希望我的迁移能够将一堆默认随机颜色值添加到我已有的表中。
如何解决这个问题?
最佳答案
可能有一种更简单的方法来完成此任务,但以下步骤应该有效:
- 添加带有
null=True
且不带默认值和unique=True
的新color
字段。 - 为您的应用运行
makemigrations
。 - 运行
makemigrations --empty
为您的应用创建自定义迁移。添加RunPython使用random_color()
进行操作来填充新列。 - 更改
color
字段以添加默认的唯一约束,并删除null=True
。 - 再次运行
makemigrations
。
关于python - 模型 django 中唯一随机默认值的迁移问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59886649/