Сохраните отношения "многие-ко-многим" после использования метода add() на поле для добавления записи

У меня есть модель Book и я хочу сохранять новую запись об этой книге после каждого обновления информации об этой книге (дублирование информации). Это работает хорошо, но я не знаю, как хранить отношения "многие-ко-многим". При этом я хочу, чтобы главная книга не сохранялась в базе данных, а только дублирующая информация в базе данных

models.py

class Book(models.Model):
    slug = models.SlugField(max_length=255)
    title = models.CharField(max_length=255)
    author = models.ForeignKey(
        "Author",
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        related_name="author_book",
    )
    abstract = models.TextField()
    coauthor_book = models.ManyToManyField("Author", blank=True, related_name="coauthor_book")
    subject = ManyToManyField("Subject")

class Author(models.Model):
    slug = models.SlugField(max_length=255)
    name = models.CharField(max_length=255)

class Subject(models.Model):
    slug = models.SlugField(max_length=255)
    name = models.CharField(max_length=255)

forms.py

class BookForm(forms.ModelForm):
      class Meta:
        model = Book
        fields = "__all__"

views.py

class BookUpdateView(UpdateView):
    model = Book
    form_class = BookForm
    template_name = "book/book_update.html"

    def post(self, request, *args, **kwargs):
        self.object = self.get_object()
        form = self.get_form()
        if form.is_valid():
            obj = form.save(commit=False)
            obj.editor = self.request.user

            coauthors = obj.coauthor_book
            subjects = obj.subject
            draft = Book.objects.create(
                title=obj.title,
                author=obj.author,
                abstract=obj.abstract,
                slug=obj.slug,
            )
            draft.save()

# My triying. But It doesn't work
            for coauthor in coauthors.all():
                draft.coauthor_book.add(coauthor)
            for subject in subjects.all():
                draft.subject.add(subject)
            return redirect("book", obj.slug)
        return self.render_to_response({"form": form})
Вернуться на верх