这是来自models.py的一个类:
class Shop(models.Model):
...
code = models.CharField(max_length=4, default=generate_random_code())
您可以想象,generate_random_code()
总是返回不同的字符串。
问题是,Django迁移引擎丢失了,因为每次我创建python manage.py makemigrations
时,我都会得到一个新的修改Alter field tablet_code on shop
。我想这是因为函数被执行了,但它不应该,所以Django认为我修改了代码。
你会如何解决这个问题?感谢。
答案 0 :(得分:5)
根据the docs,您可以传递可调用的
class Shop(models.Model):
...
code = models.CharField(max_length=4, default=generate_random_code)
..但不要像你当前那样打电话,或者你遇到了问题(导入模型时生成的随机数一次,但每次运行应用程序时都会更改)
相反,通过传递callable本身,迁移应该起作用,每次创建实例时都会得到一个新值