¿Cómo eliminaría un objeto de una relación de varios a varios sin eliminar el objeto real?
Ejemplo:
Tengo los modelos Moods
y Interest
.
Mood
tiene un campo de varios a varios interests
(que es a models.ManyToManyField(Interest)
).
Creo una instancia de Moods
llamado my_mood
. En my_moods
el campo de intereses que tengo my_interest
, es decir
>>> my_mood.interests.all()
[my_interest, ...]
¿Cómo se quita my_interest
de my_mood
sin borrar cualquier caso modelo? En otras palabras, ¿cómo elimino la relación sin afectar los modelos relacionados?
django
many-to-many
Nachshon Schwartz
fuente
fuente
AttributeError: 'RelatedManager' object has no attribute 'remove'
entry my_mood.interests.add(my_interest)
Si necesita eliminar todas las referencias M2M sin tocar los objetos subyacentes, es más fácil trabajar desde la otra dirección:
Si bien esto no aborda directamente la pregunta del OP, a menudo es útil en esta situación.
fuente
interest.relatedname.clear()
En su caso, simplemente puede borrar la relación
Entonces tal vez cuando vuelva a crear una nueva relación en su serializador, pueda hacer algo como esto
fuente