UUID as default value in Django model

后端 未结 2 1778
小鲜肉
小鲜肉 2021-02-07 07:00

I\'ve noticed the strange behaviour of default value in django model. For example we have a simple django model:

import uuid
...

class SiteUser(models.Model):
          


        
相关标签:
2条回答
  • 2021-02-07 07:27

    As of Django 1.8, there is a new UUIDField available. It's described in the following link which also covers how to set defaults:

    https://docs.djangoproject.com/en/1.8/ref/models/fields/#uuidfield

    0 讨论(0)
  • 2021-02-07 07:36

    Problem is the default attribute that you are setting as

    activation_key = models.CharField(max_length=64, verbose_name=u"Activation key",
                     default=uuid.uuid1())
    

    Here you are setting the default value as not a callable but value returned by uuid.uuid1() call when this model class is initialized.

    You should set it as default=uuid.uuid1 which sets it as callable, and is sets new uuid each time new default value needs to be used.

    0 讨论(0)
提交回复
热议问题