在Django中设置替代pk

时间:2016-07-06 10:58:34

标签: python django primary-key django-database

我想让Django为一个Model生成6位以上的数字ID' s。我不想从零开始,但我希望这些ID能够被用户清晰可读。所以好的就是例如: 658975

怎么做?

我试过这个:

class MyUUIDModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

uuid会产生巨大的序列,这些序列不是用户友好的。

你有什么建议吗?也许设置自动增量pk的最小数量就足够了。

2 个答案:

答案 0 :(得分:0)

难道你不能简单地使用pk +随机数向用户显示并保持逻辑的其余部分相同吗?

另外,你去How to make a primary key start from 1000?

为此写一个迁移。

答案 1 :(得分:0)

将主键设置为从100000开始的最佳选项。例如(MySQL),

ALTER TABLE django_app_table_name AUTO_INCREMENT = 100000

由于这些命令取决于数据库供应商,因此最好使用Django迁移documentation编写我们自己的自定义迁移。