gpt4 book ai didi

python - Django 从管理面板添加新条目

转载 作者:太空宇宙 更新时间:2023-11-03 18:15:19 25 4
gpt4 key购买 nike

我正在尝试使用 Django 中的管理面板添加新条目问题是我已经用 200 条记录填充了我的数据库,如果我尝试从管理员添加新条目,我会收到重复的关键错误消息,每当我再次尝试该过程时,该错误消息就会不断增加错误:

duplicate key value violates unique constraint "app_entry_pkey"

admin.py:

admin.site.register(Entry)

型号:

class Entry(models.Model):
title = models.CharField(max_length=255)
url = models.TextField(max_length=255)
img = models.CharField(max_length=255)

def __unicode__(self):
return self.title

最佳答案

如果您使用 Django 创建数据库表,那么当您在 Django 外部导入数据时,您的 auto_increment 值很可能不会更新。

也可能是,当您导入数据时,您没有为这 200 条记录提供各自唯一的主键。我认为(某些版本的)SQLite 有时会允许批量导入。

MySQL

例如,我在 Sequel Pro 中查看 MySQL 表,发现它的“auto_increment”值为 144。这意味着下一个主键值将为 144。

您可以使用以下命令查看表(在 MySQL 中)的该值:

SHOW TABLE STATUS FROM databaseName where name="entry"

将“databaseName”替换为您的 Django 数据库的名称。其他数据库软件可能有不同的语法。

您可以使用以下方法设置下一个 auto_increment 值(在 MySQL 中):

ALTER TABLE databaseName.entry AUTO_INCREMENT ###

再次将databaseName替换为您的数据库名称;和以前一样,语法可能会根据您使用的数据库软件而有所不同。

如果这没有帮助,您可能会发现显示表格的状态并将其复制到您的问题中很有用。这对于追踪问题也可能很有用:

SHOW CREATE TABLE databaseName.entry

Postgres

在 Postgres 中,您可以使用以下方法获取自动增量变量(在 Postgres 中称为序列)的当前值:

SELECT last_value FROM app_entry_pkey;

您可能会将其设置为新值,例如:

ALTER SEQUENCE app_entry_pkey RESTART WITH ###

SELECT setval('app_entry_pkey', ###)

但请注意,我没有方便的 Postgres 数据库来测试这些。您可能还会发现以下命令很有用:

SELECT MAX(id) FROM entry
SELECT nextval('app_entry_pkey')

后者通常应大于前者,请注意“id”是“entry”模型表中列的名称;您的表中的值可能有所不同。请参阅http://www.postgresql.org/docs/8.1/static/functions-sequence.html了解更多信息。

关于python - Django 从管理面板添加新条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25107544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com