Для переопределения формы Django, чтобы пост стал привязан к пользователю, вы можете воспользоваться методом form_valid()
в классе CreateView
или UpdateView
.
В первую очередь, вам необходимо импортировать модель пользователя Django и модель поста, а также форму для создания/редактирования поста. Это можно сделать с помощью следующих импортов:
from django.contrib.auth.models import User from django.views.generic import CreateView from .models import Post from .forms import PostForm
Затем вам нужно создать класс вида, который будет наследоваться от CreateView
или UpdateView
и переопределить метод form_valid()
.
class PostCreateView(CreateView): model = Post form_class = PostForm template_name = 'post_create.html' def form_valid(self, form): # Получение автора поста self.object = form.save(commit=False) self.object.author = self.request.user self.object.save() return super().form_valid(form)
В этом примере PostCreateView
является классом-наследником CreateView
, который использует модель Post
и форму PostForm
для создания нового поста. В методе form_valid()
формы мы присваиваем автору поста текущего пользователя (self.request.user
) и сохраняем объект формы перед вызовом super().form_valid(form)
для завершения сохранения.
Обратите внимание, что я использовал commit=False
при вызове form.save()
, чтобы предотвратить сохранение объекта формы до присвоения автора поста. Если вы хотите добавить функциональность редактирования поста, вы можете использовать тот же подход в классе PostUpdateView
, наследующем от UpdateView
.
Переопределение формы Django, чтобы пост был привязан к пользователю, в этом случае выполняется путем установки автора поста в соответствующего пользователя перед сохранением объекта формы. Это обеспечивает привязку поста к пользователю, создавшему его.