Добавление первого товара в корзину возвращает ошибку интергрити
В логике views.py, как вы можете видеть, я напечатал три символа x, y и z для внешнего блока else, который создает новый заказ с добавлением первого товара. Однако если корзина пуста и попытаться добавить товар, то возникает ошибка, говорящая:
null value in column "order_id" of relation "onlineshopping_order" violates not-null constraint
DETAIL: Failing row contains (2021-09-23 07:49:55.861471+00, 2021-09-23 07:49:55.861471+00, f, 2, null, null, null, null).
views.py:
@login_required
def add_to_cart(request, slug):
item = get_object_or_404(AffProduct, slug=slug)
order_item, created = OrderItem.objects.get_or_create(
item=item,
user=request.user,
ordered=False
)
order = Order.objects.filter(user=request.user, ordered=False).first()
if order:
# check if the order item is in the order
if order.items.filter(item__slug=item.slug).exists():
order_item.quantity += 1
order_item.save()
messages.info(request, "This item quantity was updated.")
else:
order.items.add(order_item)
messages.info(request, "This item was added to your cart.")
else:
# ordered_date = timezone.now()
print('x')
order = Order.objects.create(user=request.user)
print('y')
order.items.add(order_item)
print('z')
messages.info(request, "This item was added to your cart.")
return render(request, 'cart.html', {'order_item': order_item, 'object': order})
Я думаю, что ошибка связана с этой строкой:
order = Order.objects.create(user=request.user)
В ваших моделях вы явно объявили поле id по умолчанию как order_id
и я думаю, что оно не генерируется автоматически. Поэтому вы должны добавить order_id
также при попытке создать новый объект