Django удаление объекта из отношений ManyToMany
как бы я удалил объект из отношения "многие ко многим", не удаляя фактический объект?
пример:
у меня есть модели Moods и Interest.
'настроение' имеет много ко многим поля interests (это models.ManyToManyField(Interest)).
Я создаю экземпляр Moods под названием my_mood. В поле интересов my_moods у меня есть my_interest, что означает
>>> my_mood.interests.all()
[my_interest, ...]
Как удалить my_interest из my_mood без удаление любого экземпляра модели? Другими словами, Как удалить связь, не затрагивая связанные модели?
3 ответов:
my_mood.interests.remove(my_interest)Примечание: возможно, вам придется получить экземпляр
my_moodиmy_interestиспользуя API запросов Django прежде чем вы можете выполнить этот код.
Если вам нужно удалить все ссылки 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()
Comments