我想在我现有的模型中添加一个新字段,称为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
我遵循了与此处提供的类似的逻辑。
现在,这种方法的问题在于,没有什么color
可以寻找的。
我还希望我的迁移可以将一堆默认的随机颜色值添加到我现有的表中。
我该如何解决?
可能有一种更简单的方法可以完成此操作,但是这些步骤应该有效:
color
带有null=True
和不带有默认值以及的新字段unique=True
。makemigrations
为您的应用程序运行。makemigrations --empty
以为您的应用创建自定义迁移。使用来添加RunPython操作random_color()
以填充新列。color
字段以添加默认的唯一约束,然后删除null=True
。makemigrations
再次运行。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句