Reputation: 47
I'm trying to delete a Foreign Key model, however after I delete it and try and save the model I get a ValueError:
save() prohibited to prevent data loss due to unsaved related object 'orderassigned'.
What I'm trying to achieve is delete the orderassigned Foreign Key model itself.
Below is this deletion code in views.py:
ordertocancel = Order.objects.get(orderid=orderid, orderassigned__user=self.request.user)
ordertocancel.orderassigned.delete() # This references a Foreign Key
ordertocancel.status = "ordered"
ordertocancel.save()
This is the Foreign Key:
orderassigned = models.ForeignKey('Assigned', null=True, blank=True, on_delete=SET_DEFAULT, default=None)
Any help would be greatly appreciated, thank you!
Upvotes: 0
Views: 473
Reputation: 21797
You are deleting the OrderAssigned instance yet keeping it assigned to the instance of Order, you should make sure to assign it as null before saving like so:
ordertocancel = Order.objects.get(orderid=orderid, orderassigned__user=self.request.user)
order_assigned = ordertocancel.orderassigned
order_assigned.delete()
ordertocancel.orderassigned = None
ordertocancel.status = "ordered"
ordertocancel.save()
Upvotes: 1