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... но да. Я не понимаю, это практически прямое копирование из документации и это не работает.