开发者

Django removing object from ManyToMany relationship

开发者 https://www.devze.com 2023-03-12 20:46 出处:网络
How would I delete an object from a Many-to-Many relationship without removing the actual object? Example:

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)

0

精彩评论

暂无评论...
验证码 换一张
取 消