Django removing object from ManyToMany relationship
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 h开发者_高级运维ave 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?
my_mood.interests.remove(my_interest)
Django's Relations Docs
Note: you might have to get an instance of my_mood
and my_interest
using Django's QuerySet API before you can execute this code.
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()
While this does not directly address the OP's question, it's often useful in this situation.
In your case you can simply clear the relationship
my_mood.interests.clear()
Then perhaps when you are again creating new relation in your serializer you can do something like this
interests = Interests.objects.get_or_create(name='Something')
my_mood_obj.tags.add(tag[0])
my_mood_obj.save()
model.field.remove(object_you_want_to_remove)
In this case use: my_mood.interests.remove(my_interest)
精彩评论