Как я могу автозаполнить поле в моей форме django в представлении на основе класса?
Я создаю возможность для пользователей комментировать книгу. У меня есть список книг, где размещены все книги в базе данных, а также подробная книга для каждой книги. Я создал форму для возможности комментирования в подробной книге, где передаю различные поля, но некоторые я хочу, чтобы автозаполнялись не самими пользователями, например, название книги и автора. С автором мне удалось это сделать, но название книги не работает. Буду благодарен, если вы сможете помочь с этим.
models.py
forms.py
from django import forms
from .models import Author, Book, Review
class NewReviewForm(forms.ModelForm):
class Meta:
model = Review
fields = ("title", "body")
views.py
from django.db.models import Q
from django.contrib import messages
from django.contrib.messages.views import SuccessMessageMixin
from django.http import HttpResponseForbidden
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse_lazy
from django.urls import reverse
from django.views.generic.edit import FormMixin
from django.views.generic import (CreateView, DeleteView, DetailView, ListView,
TemplateView, UpdateView)
from .filters import BookFilter
from .forms import AuthorForm, BookForm, NewReviewForm
from .models import Author, Book, Genre, Review
class BookDetailView(FormMixin, DetailView):
model = Book
template_name = "book-detail.html"
context_object_name = "book"
form_class = NewReviewForm
def get_success_url(self):
return reverse('book_detail', kwargs={'pk': self.object.id})
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["author"] = Author.objects.all()
context['form'] = NewReviewForm(initial={'id': self.object})
return context
def post(self, request, *args, **kwargs):
if not request.user.is_authenticated:
return HttpResponseForbidden()
self.object = self.get_object()
form = self.get_form()
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
def form_valid(self, form):
form.instance.author = self.request.user
form.save()
return super(BookDetailView, self).form_valid(form)
book-detail.html