So ersetzen Sie den Primärschlüssel durch eine eindeutige Ganzzahl für eine bestimmte Tabelle in Django
In Django-Anwendungen ist der Standard-Primärschlüssel ein Auto -Inkrementierte Ganzzahl, die für externe Benutzer über URLs sichtbar sein kann. Um diese Informationen zu schützen, ist es üblich, den Primärschlüssel zu hashen. Diese Methode erfordert jedoch möglicherweise häufiges Hashing und Unhashing, was ineffizient sein kann.
Lösung
Ein besserer Ansatz besteht darin, eine eindeutige Ganzzahl zu generieren, die jedoch nicht global eindeutig ist nur innerhalb einer bestimmten Tabelle eindeutig. Dies kann durch eine Kombination aus einem Zeitstempel und einer Zufallskomponente erreicht werden:
Python-Code zum Generieren von IDs
import time import random START_TIME = time.time() * 1000 # Initial timestamp (arbitrary) def make_id(): """ Generates a unique ID based on a timestamp and random bits. """ t = int(time.time() * 1000) - START_TIME u = random.SystemRandom().getrandbits(23) id = (t << 23) | u return id def reverse_id(id): """ Converts ID back to a timestamp. """ t = id >> 23 return t + START_TIME
Django Modell
from django.db import models class MyClass(models.Model): id = models.BigIntegerField(default=make_id, primary_key=True)
Vorteile
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWie generiert man eindeutige Ganzzahl-IDs für Django-Modelle ohne globale Eindeutigkeit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!