Jak usunąć obiekt z relacji Wiele do wielu bez usuwania samego obiektu?
Przykład:
Mam modele Moods
i Interest
.
Mood
ma pole wiele-do-wielu interests
(czyli a models.ManyToManyField(Interest)
).
Tworzę instancję Moods
nazwaną my_mood
. W my_moods
polu zainteresowań mam my_interest
, to znaczy
>>> my_mood.interests.all()
[my_interest, ...]
Jak usunąć my_interest
z programu my_mood
bez usuwania jednej z instancji modelu? Innymi słowy, jak usunąć relację bez wpływu na powiązane modele?
django
many-to-many
Nachshon Schwartz
źródło
źródło
AttributeError: 'RelatedManager' object has no attribute 'remove'
entry my_mood.interests.add(my_interest)
Jeśli chcesz usunąć wszystkie odniesienia M2M bez dotykania znajdujących się pod nimi obiektów, łatwiej jest pracować z innego kierunku:
Chociaż nie odnosi się to bezpośrednio do pytania PO, często jest przydatne w tej sytuacji.
źródło
interest.relatedname.clear()
W twoim przypadku możesz po prostu wyczyścić związek
Być może wtedy, gdy ponownie tworzysz nową relację w swoim serializatorze, możesz zrobić coś takiego
źródło