首页 > 解决方案 > 保存新对象时出现重复键错误

问题描述

我正在使用表单创建一个新对象,当我点击保存按钮时出现此错误:/部门/添加重复键值处的 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.

有人可以说我在这里缺少什么吗?非常感谢!

标签: django

解决方案


推荐阅读