在 Django 中,默认主键是一个自增正整数,贯穿始终该应用程序。然而,这会公开暴露数据库中实体的数量,从而促使需要替代方案。本文解决了混淆主键的一组特定要求:
受本文启发的Instagram 方法满足这些要求。生成的 ID 包含:
身份证世代:
START_TIME = <unix timestamp> def make_id(): t = int(time.time()*1000) - START_TIME u = random.SystemRandom().getrandbits(23) id = (t << 23) | u return id def reverse_id(id): t = id >> 23 return t + START_TIME
型号:
class MyClass(models.Model): id = models.BigIntegerField(default=fields.make_id, primary_key=True)
以上是如何用唯一的、短的、整数 ID 替换 Django 的自动递增主键?的详细内容。更多信息请关注PHP中文网其他相关文章!