Dav*_* D. 0 python django django-migrations
这是models.py中的一个类:
class Shop(models.Model):
...
code = models.CharField(max_length=4, default=generate_random_code())
Run Code Online (Sandbox Code Playgroud)
可以想象,generate_random_code()总是返回一个不同的字符串.
问题是,Django迁移引擎丢失了,因为每次我做一个python manage.py makemigrations,我得到一个新的修改Alter field tablet_code on shop.我想这是因为函数被执行了,但它不应该,所以Django认为我修改了代码.
你怎么解决这个问题?谢谢.
根据文档,您可以传递一个可调用的
class Shop(models.Model):
...
code = models.CharField(max_length=4, default=generate_random_code)
Run Code Online (Sandbox Code Playgroud)
..但不要像你正在做的那样打电话,或者你遇到了问题(导入模型时生成的随机数,但每次运行应用程序时都会更改)
相反,通过传递callable本身,迁移应该起作用,每次创建实例时都会得到一个新值