共享帖子不会将图像发布到后端的共享对象



我很难用我的功能共享帖子,我的挑战是每当我共享帖子时,原始帖子中的共享图像不会将图像发布到新的帖子图像字段,而是将图像转发到原始共享帖子字段,因此无法显示共享图像!我的问题是,为什么我的帖子被转发到原始图片字段,而不是新的共享帖子字段!希望找到解决方案?

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()

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,
group       = original_post.group,
video      = original_post.video,
shared_on = datetime.now(),
shared_user = request.user)
new_post1.save()
for image in original_post.groupimage_set.all():
new_post = GroupImage(post=new_post1, 
group=original_post.group,
shared_user=request.user,
image=image.image)

new_post.save()
print("new_post",new_post) # just for debugging the program...

我认为你处理分享帖子的另一种方法是在帖子上加一个外键。如果你需要更多帮助,请告诉我。

最新更新