"IntegrityError at /payment_getway/ FOREIGN KEY constraint failed in Django".

Я работаю над проектом Django, в котором пользователи могут размещать заказы, и я столкнулся с IntegrityError, связанным с ограничением внешнего ключа.

Ошибка:

IntegrityError at /payment_getway/
FOREIGN KEY constraint failed

Код просмотра:

def payment_getway(request):
    if request.method == "POST":
        user = request.user

        # Retrieve address data from the form
        # address_id = request.POST.get('address_id')  # Make sure you pass this ID in your form

        # Retrieve the address instance
        address_instance = get_object_or_404(Address, user=user)

        # Create a new CartOrder instance
        order = CartOrder(
            user=user,
            full_name=address_instance.name,
            email=address_instance.email,
            mobile=address_instance.mobile,
            address=address_instance,  # Assign the Address instance here
            landmark=address_instance.landmark,
            city=address_instance.region,
            state=address_instance.region,  # Update as per your address model
            postalCode=address_instance.pin,
        )
        order.save()

        cart_total_ammount=0
        if 'cart_data_obj' in request.session:
            for p_id, item in request.session['cart_data_obj'].items():
                cart_total_ammount += int(item['qty']) * float(item['price'])

        #getting total ammount for the cart
        # for p_id, item in request.session['cart_data_obj'].items():
        #     cart_total_ammount += int(item['qty']) * float(item['price'])

            cart_order_products = CartOrderItems.objects.create(
                user=request.user,
                order=order,
                invoice_num= str(order.id), # INVOICE_NO-3
                item=item['title'],
                image=item['image'],
                qty=item['qty'],
                price=item['price'],
                total=float(item['qty']) * float(item['price']),
                # product = Product.objects.get(pid=item['pid'])
            )

        
        # Redirect or render a success page
        return redirect('core:order_confirmation')  # Update with your success URL

    # Render payment page with context
    user = request.user
    addresses = Address.objects.filter(user=user)
    return render(request, "core/payment-getway.html", {"addresses": addresses})

Модели:

Форма:

<div class="address-box">
   <h2>Delivery Address</h2>
   <p><strong>{{ address.name }}</strong></p>
   <p>{{ address.address }}</p>
   <p>{{ address.region }} - {{ address.pin }}</p>
   <p>{{ address.mobile }}</p>
</div>

Что я пробовал:

  1. Убедитесь, что адрес address_id правильно передается из формы.
  2. Проверили, что адрес существует и принадлежит вошедшему пользователю.

Несмотря на эти проверки, я все еще сталкиваюсь с IntegrityError.

Вопросы:

  1. Я что-то упускаю в ограничении внешнего ключа?
  2. Как я могу убедиться, что адрес правильно связан с экземпляром CartOrder? Любые соображения или предложения будут очень признательны. Спасибо!

Вы не предоставляете сообщение об ошибке, поэтому я предоставляю простой метод.

Объявить "db_constraint=False" для всех fk.

Вернуться на верх