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 на самом посте. Дайте мне знать, если вам нужна дополнительная помощь по этому вопросу.

Вернуться на верх