Django.db.utils.IntegrityError: (1062, "Дублирующаяся запись '8d4d1c76950748619f93ee2bfffc7de5' для ключа 'request_id'")

Я не понимаю, что это за ошибка? Иногда этот код работает, а после 1-2 раз отправки формы, когда я пытаюсь отправить форму снова с другими данными, я получаю эту ошибку, django.db.utils.IntegrityError: (1062, "Duplicate entry '8d4d1c76950748619f93ee2bfffc7de5' for key 'request_id'")

>

Вот мой код views.py


@api_view(['POST', 'GET'])
def add_info_view(request):

    if request.method == 'POST':
        form = GitInfoForm(request.POST)
        if form.is_valid():
            form.save()
            try:
                git_Id = form.cleaned_data['git_Id']
                s = Gitinformation.objects.filter(git_Id=git_Id).values('request_id')
                print('Value of S :', s[0]['request_id'])
                s = s[0]['request_id']

                approve_url = f"http://127.0.0.1:8000/Approve/?request_id={str(s)}"
                print("Url : ", approve_url)
                try:
                    send_mail(
                        'KSA Test Activation',
                        approve_url,
                        'Noreplygcontrol@airlinq.com',
                        ['sorav.parmar@airlinq.com'],
                        fail_silently=False,
                    )
                    request.session['approve_url'] = approve_url
                    print('Approve Url sent : ', approve_url)
                except Exception as e:
                    pass
            except Exception as e:
                pass
        form = GitInfoForm()
    form = GitInfoForm()
    return render(request, 'requestApp/addInfo.html', {'form': form})



Как избавиться от этой ошибки, пожалуйста, помогите мне.

Основываясь на вашем комментарии.

request_id = models.UUIDField(primary_key=False, default=uuid.uuid4().hex, editable=False, unique=True)

Вы назначили экземпляр UUID для значения по умолчанию. Фактически, вы не задали функцию для генерации нового UUID для каждой записи. Если вы проверите соответствующий файл миграции, вы увидите строку, подобную этой:

('request_id', models.UUIDField(default='97c8a76eefe8445081fcfec3af4f1df2', editable=False, unique=True))

вы установили экземпляр UUID по умолчанию, но уникальное свойство установлено, из-за этого при первом сохранении записи все нормально, но при последующих записях вы сталкиваетесь с ошибкой.

На самом деле, вы должны установить функцию по умолчанию, чтобы она выполнялась для каждой записи. Вы должны установить свойства, как показано ниже:

request_id = models.UUIDField(primary_key=False, default=uuid.uuid4, editable=False, unique=True)
Вернуться на верх