【问题标题】:How to change the id format of field in a model?如何更改模型中字段的id格式?
【发布时间】:2020-05-15 14:53:33
【问题描述】:

例如,我有一个 customer IDs 字段来自

1, 2, 3, 4, 5, ...

但是我想将格式更改为

010101, 010102, 010103, 010104, 010105, ...

因为它显示在我的数据库和模板上。

有什么办法吗?

我使用的是 PostgreSQL 版本 12 和 pgadmin 4。

我一直在查询编辑器上使用以下内容


SELECT concat('0101', lpad(id, 2, '0')) from public.accounts_customer

但是收到下面的错误

ERROR:  function lpad(integer, integer, unknown) does not exist
LINE 1: SELECT concat('0101', lpad(id, 2, '0')) from public.accounts...
                              ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
SQL state: 42883
Character: 23

【问题讨论】:

  • 您只想将相同的字符串前缀 0101 添加到您的 id 中吗?在 id 99 .??... 之后会发生什么,而您只想在 select 中看到,或者您想更新 bd 中的值? .. 尝试更好地解释
  • 所以格式将是 id 99 例如将是 010199 之后将是 010200。是的想要更新 db 中的值。
  • 哪个数据类型是字段 customerID ???是字符串还是整数?如果数据类型是整数,您可以使用字符串更新值(前导 0 仅适用于字符串)
  • 它是整数,而且我有一个客户 ID 的过滤表单,所以如果我在模板中搜索,它需要搜索 ID 的整数值。
  • 我已经发布了一个回答

标签: python django postgresql django-models pgadmin-4


【解决方案1】:

您不能将前导 0 添加到整数并存储在 db 中,您只能管理选择结果 .. 例如

 select concat('0101', lpad(yourcol,2,'0'))
 from your_table 

或尝试强制转换

 select concat('0101', lpad(yourcol,2,'0'::text))
 from your_table 

【讨论】:

  • 从查询编辑器返回错误提示“函数 lpad(integer, integer, unknown) 不存在”
  • 答案已更新 .. 缺少结束语 ) .. 无论如何您使用的是哪个 db 哪个版本? ...postgresql.org/docs/8.2/functions-string.html
  • 又试了一次,还是同样的错误。在 pgadmin4 上使用 PostgreSQL 12
  • 更新您的问题并添加您正在使用的确切代码..
  • 回答已删除的报价
猜你喜欢
  • 2019-07-10
  • 2015-02-21
  • 1970-01-01
  • 2014-10-01
  • 2016-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多