@Vsumin

Добавить в форму данные?

Всем привет!
Подскажите, как автоматически подставить в форму данные из модели (book и имя юзера который сейчас в системе). Сейчас я могу выбрать любого пользователя и любую книгу.
63623a7a9e5da337266751.png

Я хочу сделать возможность написать отзыв о книге.
Заранее спасибо за информацию!

model.py
class Review(models.Model):
    book = models.ForeignKey(Book, on_delete=models.CASCADE, related_name='review',)
    review = models.CharField(max_length=255)
    author = models.ForeignKey(get_user_model(), on_delete=models.CASCADE,)
    created_at = models.DateTimeField(auto_now_add=True)


    def __str__(self):
        return self.review


view.py
class AddNewReview(LoginRequiredMixin, CreateView):
    model = Review
    form_class = AddReview
    template_name = 'books/add_review.html'
    success_url = reverse_lazy('book_list')


urls.py
path('add_review/<int:pk>/', AddNewReview.as_view(), name='add_review'),


book_detail.html
<a href="{% url 'add_review' book.id %}">Add review</a>


add_review.html
<form method="POST">
        {% csrf_token %}
        {{ form|crispy }}
        <button class="btn btn-success" type="submit">Submit</button>
        </form>
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Vsumin Автор вопроса
C полем author разобрался, добавил в файл view.py form_valid

class AddNewReview(LoginRequiredMixin, CreateView):
    model = Review
    form_class = AddReview
    template_name = 'books/add_review.html'
    success_url = reverse_lazy('book_list')

    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)


А как передать в поле book название книги?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы