jjwood1600
jjwood1600

Reputation: 47

Deleting a Foreign Key model?

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

Answers (1)

Abdul Aziz Barkat
Abdul Aziz Barkat

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

Related Questions