【问题标题】:Set alternative pk in Django在 Django 中设置替代 pk
【发布时间】:2016-07-06 10:58:34
【问题描述】:

我想让 Django 为一个Model 生成 6 位以上的数字 id。我不想从零开始,但我希望这个 id 清晰易读。所以好的是例如:658975

怎么做?

我试过了:

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

但是uuid 生成的序列很大,对用户不友好。

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

【问题讨论】:

    标签: python django primary-key django-database


    【解决方案1】:

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

    否则你去How to make a primary key start from 1000?

    为此写一个迁移。

    【讨论】:

    • 这不是一个坏主意……但是重构/重写代码太多了。例如获取带有 id 的请求等......太容易在代码中出错。但如果没有别的,我会试试这个。
    【解决方案2】:

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

    ALTER TABLE django_app_table_name AUTO_INCREMENT = 100000
    

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

    【讨论】:

      猜你喜欢
      • 2013-05-13
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      相关资源
      最近更新 更多