I Want To Create Object For "ProductOut" Model When "CusOrder" Model Is Being Created
Here Is My Code
class CusOrder(models.Model):
cus_name = models.CharField(max_length=100)
cus_number = models.CharField(max_length=11)
product = models.ManyToManyField(Product)
qty = models.IntegerField(default=0)
sell_price = models.IntegerField(default=0)
def __str__(self):
return self.cus_name
def save(self,*args,**kwrgs):
ProductOut.objects.create(
refrence=self.cus_number,
stock_out = self.qty,
sell_price = self.sell_price,
product = self.product.P_name
)
super(CusOrder,self).save(*args,**kwrgs)
class ProductOut(models.Model):
refrence = models.ManyToManyField(CusOrder)
stock_out = models.IntegerField(default=0)
sell_price = models.IntegerField(default=0)
product = models.ForeignKey(Product,on_delete=models.CASCADE)
def __str__(self):
return self.refrence.cus_number
But I am Getting a ValueError which Is '"<CusOrder: Asif>" needs to have a value for field "id" before this many-to-many relationship can be used.' When I want to save a CusOrder Object
here Is My Whole
class Catagory(models.Model):
name = models.CharField(max_length=60)
def __str__(self):
return self.name
class Product(models.Model):
P_name = models.CharField(max_length=30)
stock_in = models.IntegerField(default=0)
unit_price = models.IntegerField(default=0)
cata = models.ForeignKey(Catagory, on_delete=models.CASCADE)
def __str__(self):
return self.P_name
class CusOrder(models.Model):
cus_name = models.CharField(max_length=100)
cus_number = models.CharField(max_length=11)
product = models.ManyToManyField(Product)
qty = models.IntegerField(default=0)
sell_price = models.IntegerField(default=0)
def __str__(self):
return self.cus_name
def save(self,*args,**kwrgs):
ProductOut.objects.create(
refrence=self.cus_number,
stock_out = self.qty,
sell_price = self.sell_price,
product = self.product.P_name
)
super(CusOrder,self).save(*args,**kwrgs)
class ProductOut(models.Model):
refrence = models.ManyToManyField(CusOrder)
stock_out = models.IntegerField(default=0)
sell_price = models.IntegerField(default=0)
product = models.ForeignKey(Product,on_delete=models.CASCADE)
def __str__(self):
return self.refrence.cus_number
class ReturnedProduct(models.Model):
cus_number = models.ForeignKey(CusOrder,on_delete=models.CASCADE)
product = models.ForeignKey(Product,on_delete=models.CASCADE)
qty = models.IntegerField(default=0)
def __str__(self):
return self.cus_number.cus_number
What Will Be The Right Proccess To Do That.
refrenceshould have CusOrder instance and super should call before the creation as CusOrder object should be created first.Best way is to use Django Signals, In above case specifically use post_save. Django Signals- master pre_save and post_save