UUID como valor padrão no modelo Django

Notei o estranho comportamento do valor padrão no modelo django. Por exemplo, temos um modelo django simples:

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())

Quando eu crio um novo usuário, e depois disso outro:

user_a = SiteUser(username="UserA")
user_a.save()
user_b = SiteUser(username="UserB")
user_b.save()

O Django faz 2 usuários com o mesmoactivation_key

Mas então eu faço assim:

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()

Tudo funciona bem e o Django cria 2 usuários com diferentes chaves de ativação.

Oque esta acontecendo aqui? O Python carrega o objeto de modelo e calcula o valor padrão do modelo quando o aplicativo wsgi é iniciado ou isso? Por que uuid fornece os mesmos valores no primeiro caso, mas diferentes no segundo?

Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion