"Продукт", соответствующий запросу, не существует, django

Я столкнулся с этой ошибкой при тестировании API для создания заказа. Заказ создается, когда я делаю запрос, но я все равно получаю это сообщение об ошибке. Заказ имеет связь с orderItem, а orderItem имеет связь с моделью продукта, как показано в models.py. Как мне устранить эту ошибку? Код django верен, потому что он работает на frontend, но проблема, похоже, в том, как я структурирую тело запроса на postman, как показано ниже:

{
    "orderItems":[{
        "product": 1,
        "qty":"2",
        "price":"200"
    }],
    "shippingAddress": {
        "address":"u-address", "city":"u-city", "postalCode":"12345", "country":"u-country"
    },
    
    "paymentMethod":"p-method",
    "itemPrice":"2000"
}

Вот код модели и представления.

'''
models.py
'''
class Product(models.Model):
    category = models.CharField(max_length=50, choices=Categories.choices, default=Categories.medications)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, related_name="user_product", null=True)
    name = models.CharField(max_length=150)
    brand = models.CharField(max_length=255, default="brand")
    productClass = models.CharField(max_length=50, null=True, blank=True)
    image = models.ImageField(upload_to="images/products/")
    label = models.CharField(max_length=254, default='', blank=True, null=True)
    price = models.DecimalField(max_digits=7, decimal_places=2, null=True, blank=True)
    stock = models.IntegerField(null=True, blank=True, default=0)
    dateCreated = models.DateTimeField(auto_now_add=True)


class Order(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, related_name="user_order", null=True)
    paymentMethod = models.CharField(max_length=200, null=True, blank=True)
    dateCreated = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return str(self.dateCreated)


class OrderItem(models.Model):
    product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
    image = models.CharField(max_length=200, null=True, blank=True)
    order = models.ForeignKey(Order, on_delete=models.SET_NULL, null=True)
    name = models.CharField(max_length=200, null=True, blank=True)
    qty = models.IntegerField(null=True, blank=True, default=0)
    price = models.DecimalField(max_digits=7, decimal_places=2, null=True, blank=True)

    def __str__(self):
        return str(self.name)
'''
views.py
'''
def addOrderItems(request):
    user = request.user
    data = request.data

    orderItems = data['orderItems']

    if orderItems and len(orderItems) == 0:
        return Response({'detail': 'Order item was not provided'}, status=status.HTTP_400_BAD_REQUEST)
    else:

        # Step 1: Create order

        order = Order.objects.create(
            user=user,
            paymentMethod=data['paymentMethod'],
        )

        #Step 2: Create shipping address

        shipping = ShippingAddress.objects.create(
            order=order,
            address=data['shippingAddress']['address'],
        )

        # Step 3: Create order items, then set order to orderItem relationship
        for i in orderItems:
            product = Product.objects.get(id=i['product'])

            item = OrderItem.objects.create(
                product=product,
                order=order,
                name=product.name,
                qty=i['qty'],
                price=i['price'],
                image=product.image.url,
            )

                # Step 4: Update stock
            product.countInStock -= item.qty
            product.save()

        serializer = OrderSerializer(order, many=False)
        return Response(serializer.data)
Вернуться на верх