如何追溯生成不破坏django admin的自动字段?

如何追溯生成不破坏django admin的自动字段?,django,postgresql,django-admin,Django,Postgresql,Django Admin,我在Django应用程序中使用manage.py inspectdb在 现有postgres数据库。这似乎是可行的,只是所有的 主键在模型中被描述为IntegerFields,这使得 它们可以在管理面板中编辑,并且必须根据 了解以前记录的id。我刚知道这件事 在客户端使用了一段时间后,我又回去做了一些更改,比如 blog_id = models.IntegerField(primary_key=True) …到 blog_id = models.AutoField(primary_key=Tr

我在Django应用程序中使用manage.py inspectdb在 现有postgres数据库。这似乎是可行的,只是所有的 主键在模型中被描述为IntegerFields,这使得 它们可以在管理面板中编辑,并且必须根据 了解以前记录的id。我刚知道这件事 在客户端使用了一段时间后,我又回去做了一些更改,比如

blog_id = models.IntegerField(primary_key=True)
…到

blog_id = models.AutoField(primary_key=True)
现在id字段不会出现在管理面板中,但会添加新行 已经不可能不好了

IntegrityError位于/admin/franklins_app/blog/add/

重复的键值违反唯一约束blog_pkey


有什么办法?附加问题:是否可以捕获Django试图分配为新行主键的值?

作为主键的序列字段后面的序列不知道手动输入的记录

查找主键的最大值:

SELECT MAX(<primary_key>) FROM <your_table>;
然后将基础序列的下一个值设置为大于以下值的数字:

SELECT SETVAL('<primary_key_seq>', <max_value_in_primary_key_plus_something_for_safety>);
您将使用以下命令找到上述序列的名称:


额外的回答:递增的密钥通常是在插入时由数据库设置的,所以no.像champ一样工作。谢谢你,米伦。
SELECT pg_get_serial_sequence('<your_table_name>', '<primary_key_column_name');