我正在为一个应用程序创建一个Django后端,我希望我们的实体的主键满足某些标准.第一个标准是它始终是10个字符的长度,以便在需要时易于阅读和口头分享.第二个标准是,它始终遵循相同的格式:
- 实体的前2个字符=>;代码(例如,"US"表示用户记录,"To"表示主题,"BO"表示图书等),这样任何人都可以很容易地说出某个ID的用途
- 后2个字符=>;创建日期的年份(‘24’、‘23等)
- 其余6个字符是随机生成的字母数字字符
我编写了以下代码来生成id:-
def auto_increment_id():
alphanumeric_chars = string.ascii_letters + string.digits
last_chars = ''.join(random.choice(alphanumeric_chars) for _ in range(6))
user_id = 'US' + str(datetime.date.today().year)[2:] + str(last_chars)
return user_id
我在用户模型中设置了它,如下所示
class User(models.Model):
id = models.CharField(max_length=10, primary_key=True,
default=auto_increment_id, editable=False)
我的问题是,当我们扩展时,这是否会导致性能问题或其他问题?这是一个明智的安排吗?