У меня есть такие модели, как 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)