Как переопределить форму чтоб пост стал под пользователем?

Для переопределения формы 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, чтобы пост был привязан к пользователю, в этом случае выполняется путем установки автора поста в соответствующего пользователя перед сохранением объекта формы. Это обеспечивает привязку поста к пользователю, создавшему его.