wie UUID in Django
Ich versuche, eindeutige IDs für meinen Django-Objekte. In Django 1.8 Sie haben die UUIDField. Ich bin nicht sicher, wie dieses Feld verwenden, um zu generieren eindeutiger IDs für jedes Objekt, das in mein Modell.
Hier ist, was ich für die UUIDField
import uuid
from django.db import models
class MyUUIDModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
class Person(models.Model):
...
unique_id = MyUUIDModel()
Kann ich reproduzieren, die die id für die UUID-Modell, aber jedes mal, wenn ich erhalte ich die exakt gleiche id. :(. Zum Beispiel:
person = Person.objects.get(some_field = some_thing)
id = person.unique_id.id
id, dann gibt mir die gleiche id, wie jedes mal. Was ist falsch, wie kann ich dieses Problem beheben? Danke für Eure Hilfe!
InformationsquelleAutor der Frage Chad Crowe | 2015-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin nicht sicher, warum Sie erstellt haben, ein UUID-Modell. Sie können den uuid-Feld direkt auf die Person Modell.
Jede person sollte dann eine eindeutige id. Wenn Sie wollten, dass die uuid, um den primären Schlüssel, die Sie tun würde:
Deinen aktuellen code noch nicht Hinzugefügt Feld, um die person. Es hat ein
MyUUIDModel
Beispiel, wenn Sie tun MyUUIDModel(), und speicherte es als ein class-Attribut. Es macht keinen Sinn, das zu tun, dieMyUUIDModel
wird jedes mal erstellt, wenn die models.py Lasten. Wenn Sie wirklich wollen, verwenden Sie die MyUUIDModel, könnten Sie einForeignKey
. Dann jeder Mensch würde link zu einem anderen MyUUIDModel Instanz.Jedoch, wie ich bereits sagte, die einfachste Methode ist das hinzufügen der UUID-Feld direkt auf die person.
InformationsquelleAutor der Antwort Alasdair
Sie können direkt fügen Sie den
id
Feld alsUUIDField
in derPerson
Modell. Es gibt keine Notwendigkeit für eine separateMyUUIDModel
.Ich glaube, Sie haben es verwechselt mit der
MyUUIDModel
verwendet in der UUIDField Beispielwo dieid
ist einUUIDField
. Sie können benutzen Sie einfach den untenstehenden code und verwendenUUIDs
fürid
.InformationsquelleAutor der Antwort Rahul Gupta
Die Sie brauchen, um die Klasse zu verwenden, die Sie erstellt haben, als eine Unterklasse, wenn die Erklärung Ihrer Person Modell wie folgt:
Diese Weise Person wird eine Unterklasse von MyUUIDModel und Erben seiner id-Feld definition.
InformationsquelleAutor der Antwort Sylvestre