小编Dmi*_*kov的帖子

UUID是Django模型中的默认值

我注意到django模型中默认值的奇怪行为.例如,我们有一个简单的django模型:

import uuid
...

class SiteUser(models.Model):
    ...
    username = models.CharField(max_length=255, verbose_name=u"Username")
    activation_key = models.CharField(max_length=64, verbose_name=u"Activation key", default=uuid.uuid1())
Run Code Online (Sandbox Code Playgroud)

当我创建一个新用户,之后另一个像这样:

user_a = SiteUser(username="UserA")
user_a.save()
user_b = SiteUser(username="UserB")
user_b.save()
Run Code Online (Sandbox Code Playgroud)

Django使2个用户具有相同的功能 activation_key

但后来我这样做:

user_a = SiteUser(username="UserA")
user_a.activation_key = uuid.uuid1()
user_a.save()
user_b = SiteUser(username="UserB")
user_b.activation_key = uuid.uuid1()
user_b.save()
Run Code Online (Sandbox Code Playgroud)

一切正常,Django创建了2个具有不同激活密钥的用户.

这里发生了什么?Python加载模型对象并在wsgi应用程序启动时计算模型的默认值或者?为什么uuid在第一种情况下给出相同的值但在第二种情况下不同?

谢谢.

python django django-models

9
推荐指数
2
解决办法
1万
查看次数

标签 统计

django ×1

django-models ×1

python ×1