Heim >Datenbank >MySQL-Tutorial >Wie kann ich den automatisch inkrementierenden Primärschlüssel von Django durch eine eindeutige, sichere Ganzzahl-ID für bestimmte Modelle ersetzen?
In Django ist der Primärschlüssel normalerweise eine automatisch inkrementierte positive Ganzzahl. Dies ist zwar eine praktische Standardeinstellung, kann jedoch den Datenschutz gefährden, indem die Anzahl der Entitäten in einer Datenbank offengelegt wird. Um dieses Problem anzugehen, ist eine maßgeschneiderte Lösung erforderlich, die bestimmte Anforderungen erfüllt.
Inspiriert durch den Ansatz von Instagram besteht eine geeignete Lösung darin, IDs basierend auf einer Kombination von Zeitstempeln zu generieren und Zufallsbits, die sowohl zeitliche als auch eindeutige Eigenschaften bereitstellen.
ID-Generierung:
START_TIME = a constant representing a Unix timestamp. def make_id(): t = int(time.time() * 1000) - START_TIME u = random.SystemRandom().getrandbits(23) id = (t << 23) | u return id
Modelldefinition:
class MyClass(models.Model): id = models.BigIntegerField(default=make_id, primary_key=True)
Dieser Ansatz bietet eine sichere und effiziente Möglichkeit, eindeutige Primärschlüssel zu generieren und gleichzeitig die in aufgeführten spezifischen Anforderungen zu erfüllen die Frage. Darüber hinaus kann die Methode „reverse_id“ implementiert werden, um die Erstellungszeit aus der ID abzurufen, wodurch möglicherweise die Notwendigkeit eines zusätzlichen Felds entfällt.
Das obige ist der detaillierte Inhalt vonWie kann ich den automatisch inkrementierenden Primärschlüssel von Django durch eine eindeutige, sichere Ganzzahl-ID für bestimmte Modelle ersetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!