Home » Django » Django removing object from ManyToMany relationship

Django removing object from ManyToMany relationship

Posted by: admin November 30, 2017 Leave a comment

Questions:

How would i delete an object from a Many-to-Many relationship without removing the actual object?

Example:

I have the models Moods and Interest.

‘Mood’ has a many to many field interests (which is a models.ManyToManyField(Interest)).

I create an instance of Moods called my_mood. In my_moods’s interests field I have my_interest, meaning

>>> my_mood.interests.all()
[my_interest, ...]

How do I remove my_interest from my_mood without deleting either model instance? In other words, how do I remove the relationship without affecting the related models?

Answers:
my_mood.interests.remove(my_interest)

Django’s Relations Docs

Note: you might have to get an instance of my_mood and my_instance using Django’s QuerySet API before you can execute this code.

Questions:
Answers:

If you need to remove all M2M references without touching the underlying objects, it’s easier to work from the other direction:

interest.mood_set.clear()

Leave a Reply

Your email address will not be published. Required fields are marked *