Невозможно присвоить "OrderItem.product", должен быть экземпляр "Product"

Я пытаюсь создать конечную точку "create order", я продолжаю получать

Cannot assign "<django.db.models.fields.related_descriptors.create_forward_many_to_many_manager.<locals>.ManyRelatedManager object at 0x7f50dad00f70>": "OrderItem.product" must be a "Product" instance.

heres my models

и мой views.py

#create order with orderitems
@swagger_auto_schema(method="post", request_body=OrderSerializer)
@api_view(["POST"])
@permission_classes((permissions.AllowAny,))
@authentication_classes([TokenAuthentication])
def create_order(request):
    """
    Creates an order then creates an orderitem
    """
    user = request.user
    serializer = OrderSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save(user=user)
        order_id = serializer.data["id"]
        order = Order.objects.get(pk=order_id)
        cart = user.cart_set.all()
        for item in cart:
            OrderItem.objects.create(
                order=order,
                product=item.product,
                quantity=item.quantity,

            )
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)


@swagger_auto_schema(method="post", request_body=AddToCartSerializer)
@api_view(["POST"])
@permission_classes((permissions.AllowAny,))
@authentication_classes([TokenAuthentication])
def add_to_cart(request):
    """
    Adds a product to cart
    """
    user = request.user
    serializer = AddToCartSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save(user=user)
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

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

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