模型字段上的随机生成无限迁移
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)
..但不要调用它,就像你现在正在做的那样,或者你遇到了你发现的问题(导入模型时生成一次随机数,但每次 运行 你的应用)
相反,通过传递可调用本身,迁移应该会起作用,并且每次创建实例时您都会获得一个新值
这是来自 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)
..但不要调用它,就像你现在正在做的那样,或者你遇到了你发现的问题(导入模型时生成一次随机数,但每次 运行 你的应用)
相反,通过传递可调用本身,迁移应该会起作用,并且每次创建实例时您都会获得一个新值