我有一个名为Company
的模型。如您所见,该模型非常简单。在项目中,我使用postgres数据库。
当我尝试由Django管理员创建新条目时遇到一个奇怪的问题。
首先,我通过终端的sql请求在数据库中添加5个条目。它们的ID为1到5。在数据库客户端中,我看到了它们。现在,当我尝试通过管理员添加新公司时,会引发下一个错误:
django.db.utils.IntegrityError: duplicate key value violates unique constraint "company_pkey"
DETAIL: Key (id)=(5) already exists.
有人可以说如何解决此问题吗?
models.py:
class Company(models.Model):
name = models.CharField()
admin.py:
class CompanyAdmin(admin.ModelAdmin):
search_fields = ('name',)
admin.site.register(Company, CompanyAdmin)
答案 0 :(得分:1)
您正在看到此问题,因为PostgreSQL使用序列填充id
字段。序列不知何故不同步,也许您手动分配了一个ID。
您必须重置Company
模型中用于主键的顺序。 sqlsequencereset
管理命令将打印出必要的命令。
$ python manage.py sqlsequencereset my_app
用包含my_app
模型的应用程序名称替换Company
。您应该能够将其输出通过管道传递到dbshell
管理命令。
$ python manage.py sqlsequencereset my_app| python manage.py dbshell