将模型字段默认设置为shortuuid.uuid()不会生成唯一值

时间:2019-06-15 09:37:54

标签: django django-models django-extensions

我有一个CustomUser模型,我希望每个插入都生成一个唯一的shortuuid。 不知道我是否以正确的方式进行操作,因为我遇到了带有连续插入的非唯一uuid。还是我应该重写create方法并从那里生成shortuuid?

from django_extensions.db.fields import ShortUUIDField
import shortuuid

class CustomUser(AbstractUser):
    uuid = ShortUUIDField(unique=True, blank=False, editable=False, default=shortuuid.uuid())

1 个答案:

答案 0 :(得分:0)

默认情况下,您始终需要传递 callable 而不是结果。

uuid = ShortUUIDField(unique=True, editable=False, default=shortuuid.uuid)

即没有括号。

blank=False是默认设置,您无需设置它。还要注意,这可能是主键:您应该设置primary_key=True,在这种情况下,您不需要设置uniqueeditable