Ответ 1
my_mood.interests.remove(my_interest)
Примечание: вам может понадобиться получить экземпляр my_mood
и my_interest
с помощью API Django QuerySet, прежде чем вы сможете выполнить этот код.
Как бы я удалил объект из отношения "многие ко многим", не удаляя сам объект?
Пример:
У меня есть модели Moods
и Interest
.
Mood
много-много-много models.ManyToManyField(Interest)
interests
(это models.ManyToManyField(Interest)
).
Я создаю экземпляр Moods
под названием my_mood
. В my_moods
интересов my_moods
меня есть my_interest
, то есть
>>> my_mood.interests.all()
[my_interest, ...]
Как мне удалить my_interest
из my_mood
не удаляя ни один экземпляр модели? Другими словами, как удалить связь, не затрагивая связанные модели?
my_mood.interests.remove(my_interest)
Примечание: вам может понадобиться получить экземпляр my_mood
и my_interest
с помощью API Django QuerySet, прежде чем вы сможете выполнить этот код.
Если вам нужно удалить все ссылки M2M, не касаясь нижележащих объектов, проще работать в другом направлении:
interest.mood_set.clear()
Хотя это не касается непосредственно вопроса ОП, в этой ситуации это часто полезно.
В вашем случае вы можете просто очистить отношения
my_mood.interests.clear()
Тогда, возможно, когда вы снова создаете новое отношение в своем сериализаторе, вы можете сделать что-то вроде этого
interests = Interests.objects.get_or_create(name='Something')
my_mood_obj.tags.add(tag[0])
my_mood_obj.save()