Автоматическое заполнение пользователя в формах django

Есть модель Post, на основании которой создается форма PostForm и вьюха post_create. Необходимо, чтобы имя автора поста автоматически подставлялось (создание поста доступно только авторизованному пользователю)

    Модель 
    class Post(models.Model):
        text = models.TextField()
        pub_date = models.DateTimeField(auto_now_add=True)
        author = models.ForeignKey(
            User,
            on_delete=models.CASCADE,
            related_name='posts'
        )
        group = models.ForeignKey(
            'Group',
            blank=True,
            null=True,
            on_delete=models.SET_NULL
        )
    
        class Meta:
            ordering = ['-pub_date']
    
        def __str__(self):
            return self.text

форма 
class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ('text', 'group')
        widgets = {'author': forms.HiddenInput()}

вьюха
def post_create(request):
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            
            form.author = request.user
            form = form.save()
            return redirect(f'/profile/{author}/')
        else:
            return render(request, 'posts/create.html', {'form': form})
    else:
        form = PostForm()
        return render(request, 'posts/create.html', {'form': form}) 

Возможно initial поможет в вашем вопросе.

form = PostForm(request.POST, initial = {'author':request.user})
Вернуться на верх