Cara Menggantikan Kunci Utama dengan Integer Unik untuk Jadual Khusus dalam Django
Dalam aplikasi Django, kunci utama lalai ialah auto -integer incremented, yang mungkin kelihatan kepada pengguna luaran melalui URL. Untuk melindungi maklumat ini, amalan biasa ialah mencincang kunci utama. Walau bagaimanapun, kaedah ini mungkin memerlukan pencincangan yang kerap dan nyahcincang, yang boleh menjadi tidak cekap.
Penyelesaian
Pendekatan yang lebih baik ialah menjana integer unik yang tidak unik secara global tetapi hanya unik dalam jadual tertentu. Ini boleh dicapai menggunakan gabungan cap masa dan komponen rawak:
Kod Python untuk Menjana ID
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 Model
from django.db import models class MyClass(models.Model): id = models.BigIntegerField(default=make_id, primary_key=True)
Kelebihan
Nota Tambahan
Atas ialah kandungan terperinci Bagaimana untuk Menjana ID Integer Unik untuk Model Django Tanpa Keunikan Global?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!