Skip to content Skip to sidebar Skip to footer

Uuid As Default Value In Django Model

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): ... username

Solution 1:

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.

Solution 2:

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

Post a Comment for "Uuid As Default Value In Django Model"