Django modelinde varsayılan değerin garip davranışını fark ettim. Örneğin basit bir django modeli vardır:UUID, Django modelinde varsayılan değer olarak
user_a = SiteUser(username="UserA")
user_a.save()
user_b = SiteUser(username="UserB")
user_b.save()
Django aynı activation_key
ile 2 kullanıcıları yapar:
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())
Ben yeni bir kullanıcı oluşturmak ve bundan sonra böyle başka bir
Ama sonra böyle yaparım: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()
Her şey iyi çalışıyor d Django, farklı aktivasyon tuşları ile 2 kullanıcı oluşturur.
Neler oluyor burda? Python model nesnesini yükler ve wsgi uygulaması başlatıldığında ya da bu modelin varsayılan değerini hesaplar mı? Neden uuid ilk durumda aynı değerleri veriyor ama ikinci olarak farklı mı?
Teşekkürler.
, bir çağrılabilir olması gerekiyor. İşte ilgili belgeler https://docs.djangoproject.com/en/dev/ref/models/fields/#default – karthikr