python - 模型 django 中唯一随机默认值的迁移问题

标签 python django model

我想向我已有的模型添加一个名为 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 .

现在这种方法的问题是没有可以开始寻找的颜色

而且我还希望我的迁移能够将一堆默认随机颜色值添加到我已有的表中。

如何解决这个问题?

最佳答案

可能有一种更简单的方法来完成此任务,但以下步骤应该有效:

  1. 添加带有 null=True 且不带默认值和 unique=True 的新 color 字段。
  2. 为您的应用运行 makemigrations
  3. 运行 makemigrations --empty 为您的应用创建自定义迁移。添加RunPython使用 random_color() 进行操作来填充新列。
  4. 更改 color 字段以添加默认的唯一约束,并删除 null=True
  5. 再次运行 makemigrations

关于python - 模型 django 中唯一随机默认值的迁移问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59886649/

相关文章:

python - 了解类型错误: '<' not supported between instances of 'Example' and 'Example'

python - Scrapy 不进入解析方法

python - 为什么 python 日志记录 HTTPHandler 需要 h.getresponse() ?

python - Django的Replace可以用来一次替换多个子字符串吗?

database - Django 模型过滤器

javascript - NodeJS MVC 模型验证

php - cakephp foreach循环只显示标题的第一个字母

python - python中请求之间的适当时间?

python - Django 中的迭代和内存问题

python - 在控制台而不是 Web 浏览器上显示 Django 错误