【问题标题】:django reset sequence for all autofields in a project项目中所有自动字段的 django 重置序列
【发布时间】:2021-01-05 06:25:52
【问题描述】:

在我的 django 项目中,我有很多模型。问题是,我想确保所有这些模型的主键字段都以 10000 开头并从那里递增。我在后端使用 postgresql。我知道我可以为我的模型的每个序列运行自定义 sql 迁移。但是当有很多模型时,这个过程就变得不那么适用了。有什么替代方法吗?谢谢!

【问题讨论】:

  • 我认为没有自动化的方法;但是您不应该指望自动增量 ID 的价值,理想情况下您的最终用户也不应该看到它们。尝试使用 slugs 作为用户可见的标识符。
  • django 可以做的不多,因为 auto id 属性属于数据库端,除了运行 sql 查询我认为没有其他方法

标签: python django postgresql django-models


【解决方案1】:

以下查询会将 public 架构中每个序列的下一个值设置为 10000。

DO $$
  DECLARE
    sq name;
  BEGIN
    FOR sq IN SELECT
      sequencename
    FROM
      pg_sequences
    WHERE
      schemaname = 'public'
    LOOP
      PERFORM setval(sq::regclass, 9999);
    END LOOP;
  END
$$;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-03
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 2013-03-12
    相关资源
    最近更新 更多