Python Django从管理面板添加新条目
我正试图使用Django中的管理面板添加一个新条目 问题是,我已经用200条记录填充了我的数据库,如果我尝试从admin添加一个新条目,我会得到一个重复的key error msg,每当我再次尝试该过程时,它都会不断增加 错误: admin.py:Python Django从管理面板添加新条目,python,django,Python,Django,我正试图使用Django中的管理面板添加一个新条目 问题是,我已经用200条记录填充了我的数据库,如果我尝试从admin添加一个新条目,我会得到一个重复的key error msg,每当我再次尝试该过程时,它都会不断增加 错误: admin.py: admin.site.register(Entry) 型号: class Entry(models.Model): title = models.CharField(max_length=255) url = models.Text
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外部导入数据时,很可能没有更新自动增量值 也可能是在导入数据时,没有为200条记录提供各自的唯一主键。我认为(某些版本的)SQLite有时会允许大规模导入 MySQL 例如,我在Sequel Pro中查看一个MySQL表,它的“auto_increment”值为144。这意味着下一个主键值将是144 您可以使用以下方法查看表(在MySQL中)的此值: 将“databaseName”替换为Django数据库的名称。其他数据库软件可能有不同的语法 您可以使用以下方法设置下一个自动增量值(在MySQL中): 再次用数据库名称替换databaseName;和以前一样,语法可能因您使用的数据库软件而异 如果这没有帮助,您可能会发现显示表格的状态并将其复制到您的问题中很有用。这也可能有助于跟踪问题:
SHOW CREATE TABLE databaseName.entry
博士后
在Postgres中,可以使用以下方法获取自动递增变量(在Postgres中称为序列)的当前值:
SELECT last_value FROM app_entry_pkey;
ALTER SEQUENCE app_entry_pkey RESTART WITH ###
您可能会使用以下内容将其设置为新值:
SELECT last_value FROM app_entry_pkey;
ALTER SEQUENCE app_entry_pkey RESTART WITH ###
或
不过请注意,我手头没有一个Postgres数据库来测试这些。您还可能发现以下命令很有用:
SELECT MAX(id) FROM entry
SELECT nextval('app_entry_pkey')
后者通常应该比前者大,并且注意“id”是“entry”模型表中列的名称;在你的桌子上可能会不一样。有关更多信息,请参阅。此处没有足够的信息来诊断问题。如果管理员工作正常,如果您没有用200条记录预先填充数据库,那么这可能与您这样做的方式有关。。你能检查一下数据吗。。另外,将模型粘贴到此处如果我试图从admin创建一个新条目,但数据库中没有数据,它工作正常我忘了说我的数据库是postgresqlYes,我应该从约束标题中猜出来。那么,在你的例子中,自动增量值是“序列”的一部分。好的,我将尝试一下,稍后我会给出一个答案
SELECT setval('app_entry_pkey', ###)
SELECT MAX(id) FROM entry
SELECT nextval('app_entry_pkey')