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 без удаление любого экземпляра модели? Другими словами, Как удалить связь, не затрагивая связанные модели?

881   3  

3 ответов:

my_mood.interests.remove(my_interest)

отношения Джанго Docs

Примечание: возможно, вам придется получить экземпляр 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

    Ничего не найдено.