My models looks like this:
from django.db import models
class PRODUCT(models.Model):
name = models.CharField(max_length=50)
price = models.FloatField()
def __str__(self):
return f'{self.name}- {self.price}'
class CUSTOMER(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField(max_length=254)
def __str__(self):
return f'{self.name}-{self.email}'
class ORDER(models.Model):
productID = models.ForeignKey(PRODUCT, on_delete=models.CASCADE, null=True,blank=True)
customerID = models.ForeignKey(CUSTOMER, on_delete=models.CASCADE,null=True,blank=True)
quantity = models.IntegerField()
price = models.FloatField()
def __str__(self):
return f'{CUSTOMER.pk}-{PRODUCT.pk}-{self.quantity}'
The schemas I used are:
class ORDERin(Schema):
productID: int
customerID: int
quantity: int
price: float
class ORDERout(Schema):
id: int
productID: int
customerID: int
quantity: int
price: float
This is how I tried to do the post api
from ninja import Router
from myapp.models import ORDER
from myapp.schemas import ORDERin,ORDERout
from typing import List
order_router = Router()
@order_router.post('/post')
def post_order(request, data: ORDERin):
qs = ORDER.objects.create(**data.dict())
return {List[ORDERout]}
When I tried to test this post request, I got this error: "ValueError: Cannot assign "1": "ORDER.productID" must be a "PRODUCT" instance." I don't know what I messed up here, probably my schemas but I don't know how to do it the right way.