Как выполнить удаление отношения «многие ко многим» в REST - DRF? - PullRequest
0 голосов
/ 27 января 2020

У меня есть такие модели, как Book, Author и BookAuthor, которые относятся ко многим для книги, поскольку у книги может быть много авторов.

Чтобы добавить автора в книгу, я перезаписываю execute_update, и если «авторы» - это запрос патча, я обновляю БД, но я не уверен, как можно выполнить удаление автора из BookAuthor.

Есть подсказки?

class BookSerializer(serializers.ModelSerializer):
    authors = AuthorSerializer(many=True, required=False)

    class Meta:
        model = Site
        fields = ('id', 'name', 'authors')


class BookViewSet(viewsets.ModelViewSet):
    serializer_class = BookSerializer
    queryset = Book.objects.all()

    def perform_update(self, serializer):
        book = serializer.save()

        # if authors in patch query - add it to BookAuthor      
        authors = self.request.data.getlist('authors')
        for a in authors:
            author = Author.objects.get(id=a)
            if not BookAuthor.objects.filter(book=book, author=author).exists():
                BookAuthor.objects.create(book=book, author=author)
...