[django] ManyToMany 관계에서 Django 제거 개체
실제 개체를 제거하지 않고 다 대다 관계에서 개체를 삭제하려면 어떻게해야합니까?
예:
나는 모델 Moods
과 Interest
.
Mood
다 대다 필드 interests
( models.ManyToManyField(Interest)
)가 있습니다.
Moods
라는 인스턴스를 만듭니다 my_mood
. 에서 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 것은 이 코드를 실행하기 전에.
답변
기본 개체를 건드리지 않고 모든 M2M 참조를 제거해야하는 경우 다른 방향에서 작업하는 것이 더 쉽습니다.
interest.mood_set.clear()
이것은 OP의 질문을 직접적으로 다루지는 않지만 종종이 상황에서 유용합니다.
답변
귀하의 경우 단순히 관계를 지울 수 있습니다
my_mood.interests.clear()
그런 다음 serializer에서 새 관계를 다시 만들 때 다음과 같이 할 수 있습니다.
interests = Interests.objects.get_or_create(name='Something')
my_mood_obj.tags.add(tag[0])
my_mood_obj.save()