模型字段上的随机生成无限迁移

Random on model fields generates infinite migration

这是来自 models.py 的 class:

class Shop(models.Model):
    ...
    code = models.CharField(max_length=4, default=generate_random_code())

如您所想,generate_random_code() 总是 return 不同的字符串。

问题是,Django 迁移引擎丢失了,因为每次我创建一个 python manage.py makemigrations,我都会得到一个新的修改 Alter field tablet_code on shop。我想这是因为函数被执行了,但它不应该,所以 Django 认为我修改了代码。

你会如何解决这个问题?谢谢

根据 the docs 你可以传递一个可调用的

class Shop(models.Model):
    ...
    code = models.CharField(max_length=4, default=generate_random_code)

..但不要调用它,就像你现在正在做的那样,或者你遇到了你发现的问题(导入模型时生成一次随机数,但每次 运行 你的应用)

相反,通过传递可调用本身,迁移应该会起作用,并且每次创建实例时您都会获得一个新值