django 모델에서 이상한 동작을 발견했습니다. 예를 들어 우리는 간단한 장고 모델을 가지고 :Django 모델의 기본값으로 UUID가
user_a = SiteUser(username="UserA")
user_a.save()
user_b = SiteUser(username="UserB")
user_b.save()
장고 같은 activation_key
2 사용자를 만드는 :
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())
나는 새 사용자를 작성하고, 그 후 같은 또 다른 하나
그런데 나는 그것을 좋아한다 :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()
모든 것이 잘 작동한다. d 장고는 다른 활성화 키로 2 명의 사용자를 생성합니다.
여기 무슨 일 이니? 파이썬은 모델 객체를로드하고 wsgi 응용 프로그램이 시작될 때 모델의 기본값을 계산합니까? uuid가 첫 번째 경우에는 동일한 값을 갖지만 두 번째 경우에는 다른 값을 제공하는 이유는 무엇입니까?
감사합니다.
, 그것은 호출 할 필요가있다. 다음은 관련 문서입니다 https://docs.djangoproject.com/en/dev/ref/models/fields/#default – karthikr