Ich habe das seltsame Verhalten des Vorschlagswerts im Django-Modell bemerkt. Zum Beispiel haben wir ein einfaches django Modell:UUID als Standardwert in Django Modell
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())
Wenn ich einen neuen Benutzer zu erstellen, und danach ein anderer so:
user_a = SiteUser(username="UserA")
user_a.save()
user_b = SiteUser(username="UserB")
user_b.save()
Django macht 2 Benutzern mit dem gleichen activation_key
Aber dann mache ich es so:
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()
Alles funktioniert gut d Django erstellt 2 Benutzer mit unterschiedlichen Aktivierungsschlüsseln.
Was geht hier vor? Python lädt das Modellobjekt und berechnet den Standardwert des Modells, wenn die wsgi-App gestartet wird oder? Warum gibt Uuid im ersten Fall die gleichen Werte, im zweiten aber anders?
Danke.
Wie @Rohan erwähnt, ist es ein aufrufbar sein muss. Hier ist die relevante Dokumentation https://docs.djangoproject.com/en/dev/ref/models/fields/#default – karthikr