Ошибка RelatedObjectDoesNotExist в методе сохранения в Django
Я писал метод сохранения в модели OrderCompleteStatus. Я хочу сделать так, чтобы в любом заказе, если OrderCompleteStatus.pickup равен True, то для элементов этого же заказа, и для OrderItemCompleteStatus этого элемента, я хочу сделать OrderItemCompleteStatus.pickup = True. Я пробовал, но получаю ошибку RelatedObjectDoesNotExists в строке 458. Мои модели :
class OrderCompleteStatus(models.Model):
order = models.OneToOneField('Order', on_delete=models.SET_NULL , null=True)
warehouse =models.BooleanField(default=False)
pickup = models.BooleanField(default=False)
delivered = models.BooleanField(default=False)
received_by_customer = models.BooleanField(default=False)
def __str__(self):
return "Order" + " " + str(self.order)
class Meta:
verbose_name_plural = 'Order Complete Status'
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
if self.warehouse and self.pickup and self.delivered :
self.order.complete = True
self.order.save(update_fields=['complete'])
if self.pickup :
order = self.order
orderitems = order.orderitem_set.all()
for item in orderitems:
item.orderitemcompletestatus.pickup = True
item.orderitemcompletestatus.save(update_fields=['pickup'])
class OrderItemCompleteStatus(models.Model):
order_item = models.OneToOneField('OrderItem', on_delete=models.SET_NULL , null=True)
seller = models.BooleanField(default=False)
warehouse = models.BooleanField(default=False)
pickup = models.BooleanField(default=False)
delivered = models.BooleanField(default=False)
received_by_customer = models.BooleanField(default=False)
def __str__(self):
return "Order Item " + " " + str(self.order_item)
class Meta:
verbose_name_plural = 'Order Item Complete Status'
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
if self.seller and self.warehouse and self.pickup and self.delivered :
self.order_item.complete = True
self.order_item.save(update_fields=['complete'])
class OrderItem(models.Model):
product = models.ForeignKey('Product' , on_delete=models.SET_NULL ,null=True)
complete = models.BooleanField(default=False)
order = models.ForeignKey('Order',on_delete= models.SET_NULL ,null= True)
quantity = models.PositiveSmallIntegerField(default=0 , null=True , blank = False)
unit_price = models.FloatField(null=True)
colour= models.CharField(max_length=200 ,null=True , blank=True)
size= models.CharField(max_length=200 ,null=True , blank=True)
date_ordered = models.DateTimeField(auto_now_add=True,null=True)
def __str__(self):
return "OrderItem" + " " + str(self.id)