django - 保存新对象时出现重复键错误
问题描述
我正在使用表单创建一个新对象,当我点击保存按钮时出现此错误:/部门/添加重复键值处的 IntegrityError 违反唯一约束“feedback_department_pkey”详细信息:键(id)=(1)已经存在。
虽然,我在数据库的这个表中有 18 条记录,但我不知道为什么要从第一个 id 开始保存。
我的意见.py:
# Add new department
def department_add(request):
form = DepartmentEditForm()
if request.method == "POST":
print('Printing POST', request.POST)
form = DepartmentEditForm(request.POST)
if form.is_valid():
form.save()
return redirect('feedback:department')
return render(request, 'departmentadd.html', {'form': form})
我的模型.py:
class Department(models.Model):
name = models.CharField(max_length=100)
title_bg = models.CharField(max_length=50)
title_en = models.CharField(max_length=50)
title_de = models.CharField(max_length=50)
def __str__(self):
return self.name
网址.py
path('department/add', views.department_add, name="departmentadd"),
和forms.py:
class DepartmentEditForm(forms.ModelForm):
class Meta:
model = Department
#fields = '__all__'
fields = [
'name',
'title_bg',
'title_en',
'title_de',
]
widgets = {
'name': forms.TextInput(attrs={'class': 'form-control'}),
'title_bg': forms.TextInput(attrs={'class': 'form-control'}),
'title_en': forms.TextInput(attrs={'class': 'form-control'}),
'title_de': forms.TextInput(attrs={'class': 'form-control'}),
}
这是我的回溯:
Traceback (most recent call last): File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request) File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request) File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/stela/feedbacksystem/feedback/views.py", line 119, in department_add
form.save() File "/usr/lib/python3/dist-packages/django/forms/models.py", line 458, in save
self.instance.save() File "/usr/lib/python3/dist-packages/django/db/models/base.py", line 740, in save
self.save_base(using=using, force_insert=force_insert, File "/usr/lib/python3/dist-packages/django/db/models/base.py", line 777, in save_base
updated = self._save_table( File "/usr/lib/python3/dist-packages/django/db/models/base.py", line 870, in _save_table
result = self._do_insert(cls._base_manager, using, fields, update_pk, raw) File "/usr/lib/python3/dist-packages/django/db/models/base.py", line 907, in _do_insert
return manager._insert([self], fields=fields, return_id=update_pk, File "/usr/lib/python3/dist-packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs) File "/usr/lib/python3/dist-packages/django/db/models/query.py", line 1186, in _insert
return query.get_compiler(using=using).execute_sql(return_id) File "/usr/lib/python3/dist-packages/django/db/models/sql/compiler.py", line 1375, in execute_sql
cursor.execute(sql, params) File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 99, in execute
return super().execute(sql, params) File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers
return executor(sql, params, many, context) File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params) File "/usr/lib/python3/dist-packages/django/db/utils.py", line 89, in
__exit__
raise dj_exc_value.with_traceback(traceback) from exc_value File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params) django.db.utils.IntegrityError: duplicate key value violates unique constraint "feedback_department_pkey" DETAIL: Key (id)=(1) already exists.
有人可以说我在这里缺少什么吗?非常感谢!
解决方案
推荐阅读
- python - 有人可以用 Python 解释这种行为吗?
- laravel - 如何在 JavaScript 中设置 url 以将多个参数传递给 Laravel 中的控制器而不使用请求
- android - 从服务中的 liveate 列表中获取数据
- python - 如何使用 Pymongo 在 MongoDB 中查找集合的模式
- discord - Discord兑换命令获得角色
- python - Heroku - ClearDB:连接中止 - 对等方重置连接
- laravel - Laravel Nova 公制卡位
- java - 如何使用 Selenium Remote WebDriver 在 chrome 中下载日志文件而不是查看(如果内存小于 200B,某些文件会在 chrome 中打开)
- forms - 将 ani 文件加载到 ImageList
- javascript - 如何在 thymeleaf 中调用 api 路径以在 javascript 函数中重新加载表数据