Добавление первого товара в корзину возвращает ошибку интергрити

В логике 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 также при попытке создать новый объект

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