Django переопределение CreateView с помощью form_valid

Я создаю блог на Django, в котором есть страница 'Create Post', использующая CreateView. Для этого требуется три поля, изображение, описание и автор.

Я хочу, чтобы страница автоматически назначала автора вошедшему в систему пользователю. в документации сказано, что я должен использовать метод form_valid в классе, который я использую для создания нового сообщения. Я так и делаю, но... это просто не работает.

Фактически я получаю ошибку "IntegrityError at /new/ NOT NULL constraint failed: posts_post.author_id"

##models.py

class Post(models.Model):
    image = models.ImageField()
    description = models.TextField(null=True)
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

И views.py:

##views.py

class PostCreate(LoginRequiredMixin, CreateView):
    model = Post
    fields = ['image', 'description', 'author']
    success_url = '/'

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

Я изменил PostCreate вокруг намного, убрав "автора" в полях класса PostCreate... но да. Я не понимаю, это практически прямое копирование из документации и это не работает.

Вернуться на верх