Как совместно использовать объект списка с пользовательской формой
Я пытаюсь поделиться опубликованными объектами в представлении списка, но каждый раз, когда я нажимаю на кнопку поделиться, которая перенаправляет меня на share_form.html после ввода текста в общей текстовой области и отправки формы, она не отправляет форму с общим объектом, если я не использую контекстную переменную {{ form }}, прежде чем объект может быть разделен, почему, когда я использую свою пользовательскую форму, она не отправляет общий пост, а когда я говорю {{ form }}, она может поделиться постом?
Here is my view to share post
def share_post(request, pk):
original_post = Post.objects.prefetch_related('postimage_set').get(pk=pk)
form = ShareForm(request.POST, request.FILES)
if form.is_valid():
new_post1 = Post(
shared_body = request.POST.get('description'),
description = original_post.description,
username = original_post.username,
date_posted = original_post.date_posted,
video = original_post.video,
shared_on = datetime.now(),
shared_user = request.user)
new_post1.save()
for image in original_post.postimage_set.all():
new_post = PostImage(post=new_post1,
username=original_post.username,
image=image.image)
new_post.save()
return redirect('feed:feed')
ctx = {'form':form,'original_post':original_post}
return render(request,'feed/share_form.html', ctx)
Моя модель формы django для обмена сообщениями!
class ShareForm(forms.Form):
body = forms.CharField(label='',widget=forms.Textarea(attrs={
'rows': '3',
'placeholder': 'Say Something...'
}))
Моя html форма для обмена сообщениями
После того, как я тщательно проанализировал проблему, я пришел к стабильному решению, на самом деле проблема исходила из модели формы:
this where the problem was
class ShareForm(forms.Form):
body = forms.CharField(label='',widget=forms.Textarea(attrs={
'rows': '3',
'placeholder': 'Say Something...'
}))
Вместо этого я должен был сделать что-то вроде этого, я опустил поле описания, где и была моя проблема !
class ShareForm(forms.Form):
description = forms.CharField(
label='',
widget=forms.Textarea(attrs={
'rows': '3',
'placeholder': 'Say Something...'
}))