"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>
Что я пробовал:
- Убедитесь, что адрес
address_id
правильно передается из формы. - Проверили, что адрес существует и принадлежит вошедшему пользователю.
Несмотря на эти проверки, я все еще сталкиваюсь с IntegrityError
.
Вопросы:
- Я что-то упускаю в ограничении внешнего ключа?
- Как я могу убедиться, что адрес правильно связан с экземпляром
CartOrder
? Любые соображения или предложения будут очень признательны. Спасибо!
Вы не предоставляете сообщение об ошибке, поэтому я предоставляю простой метод.
Объявить "db_constraint=False"
для всех fk.