Shared Post не публикует изображения в общий объект в бэкенде
У меня возникают трудности с обменом сообщениями с моей функцией, Моя проблема в том, что всякий раз, когда я делюсь сообщением, общие изображения в оригинальном сообщении не помещают изображения в поле изображения нового сообщения, а скорее это репост изображений в оригинальном поле общего сообщения, и поэтому это делает невозможным показать общее изображение! Мой вопрос, почему я получаю этот эффект сообщения репостят в оригинальном поле изображения, а не в новом поле общего сообщения! надеюсь на решение?
Here is my function for sharing post:
def share_post(request, pk):
original_post = Post.objects.prefetch_related('groupimage_set').get(pk=pk)
form = ShareForm(request.POST, request.FILES)
if form.is_valid():
new_post = Post(
shared_body = request.POST.get('description'),
description = original_post.description,
username = original_post.username,
date_posted = original_post.date_posted,
group = original_post.group,
video = original_post.video,
shared_on = datetime.now(),
shared_user = request.user)
new_post.save()
form = GroupImageForm(request.POST, request.FILES)
if form.is_valid():
new_post = form.save(commit=False)
for image in original_post.groupimage_set.all():
new_post = GroupImage(post=original_post,
group=original_post.group,
shared_user=request.user,
image=image.image)
new_post.save()
return redirect('group:main',original_post.group.pk)
else:
form = GroupImageForm(request.POST, request.FILES)
ctx = {'form':form, 'original_post':original_post}
return render(request,'group/share_form.html', ctx)
Вот моя модель для изображений и постов
class Post(models.Model):
group = models.ForeignKey(GroupEx, on_delete=models.CASCADE, related_name="group_post")
username = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE ,related_name="group_user")
description = models.TextField(max_length=500, blank=True)
video = models.FileField(upload_to="group_videos", blank=True)
shared_body = models.TextField(blank=True, null=True)
date_posted = models.DateTimeField(auto_now_add=True)
shared_on = models.DateTimeField(blank=True, null=True)
shared_user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True, blank=True, related_name='+')
Модель группового изображения
class GroupImage(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
group = models.ForeignKey(GroupEx,on_delete=models.SET_NULL, null=True)
shared_user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True, blank=True, related_name='+')
image = models.ImageField(upload_to='GroupImageLibrary/', blank=True, null=True)
ошибка была в том, что вы передаете original_post в GroupImage model вместо new_post.
Попробуйте изменить эту часть
if form.is_valid():
new_post = Post(
shared_body = request.POST.get('description'),
description = original_post.description,
username = original_post.username,
date_posted = original_post.date_posted,
group = original_post.group,
video = original_post.video,
shared_on = datetime.now(),
shared_user = request.user)
new_post.save()
form = GroupImageForm(request.POST, request.FILES)
if form.is_valid():
new_post = form.save(commit=False)
for image in original_post.groupimage_set.all():
new_post = GroupImage(post=original_post,
group=original_post.group,
shared_user=request.user,
image=image.image)
new_post.save()
to
if form.is_valid():
new_post = Post(
shared_body = request.POST.get('description'),
description = original_post.description,
username = original_post.username,
date_posted = original_post.date_posted,
group = original_post.group,
video = original_post.video,
shared_on = datetime.now(),
shared_user = request.user)
new_post.save()
for image in original_post.groupimage_set.all():
new_post = GroupImage(post=new_post,
group=original_post.group,
shared_user=request.user,
image=image.image)
new_post.save()
Я думаю, что другой способ, которым вы можете работать с постом share, это иметь foreignkey на самом посте. Дайте мне знать, если вам нужна дополнительная помощь по этому вопросу.