Django の特定のテーブルの主キーを一意の整数に置き換える方法
Django アプリケーションでは、デフォルトの主キーは auto です。 -増分整数。URL を通じて外部ユーザーに表示される場合があります。この情報を保護するには、主キーをハッシュするのが一般的です。ただし、この方法では頻繁にハッシュとハッシュ解除が必要になる可能性があり、非効率的になる可能性があります。
解決策
より良いアプローチは、グローバルに一意ではない一意の整数を生成することです。特定のテーブル内でのみ一意です。これは、タイムスタンプとランダム コンポーネントの組み合わせを使用して実現できます。
ID を生成するための Python コード
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モデル
from django.db import models class MyClass(models.Model): id = models.BigIntegerField(default=make_id, primary_key=True)
利点
追加メモ
以上がグローバルな一意性を持たずに Django モデルの一意の整数 ID を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。