Хочу сделать публикацию постов от автора при этом чтобы автор сам передавался в форму через авторизированного пользователя
view функция:
def post_create(request):
template = 'posts/create_post.html'
form = PostForm()
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
form.save()
return redirect('post:index')
return render(request, template, {'form': form})
context = {
'form': form
}
return render(request, template, context)
models
class Post(models.Model):
text = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
group = models.ForeignKey(
'Group',
on_delete=models.SET_NULL,
blank=True,
null=True,
related_name='posts',
)
author = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='posts'
)
class Meta:
ordering = ('-pub_date',)
def __str__(self):
return self.text[:15]
forms:
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ('text', 'group',)
Как мне передать авторизованного пользователя в заполненную форму?
Ответы (1 шт):
Автор решения: bolt_py
→ Ссылка
Измените ваше представление:
if form.is_valid():
form = form.save(commit=False)
form.author = request.user
form.save()
request.user хранит в себе текущего пользователя.
Параметр commit=False сохраняет форму, но не даёт послать форму в базу данных, что даёт возможность внести в неё изменения вручную. После этого обязательно нужно сохранить форму повторно