python - Django:如何让我可以对任何博文提交兴趣,而不仅仅是一篇博文?
问题描述
Django:如何让我可以对任何博文提交兴趣,而不仅仅是一篇博文?目前,在我向博客文章提交兴趣后,我无法再向任何其他博客文章提交兴趣。我会收到这条消息,说“您已经提交了对该帖子的兴趣。” 虽然我没有。
从我的模型的性质来看。有没有办法让我过滤我的兴趣模型中的“用户”字段,以便我只检查该特定博客文章中的特定用户是否已经提交了兴趣?
因为我知道现在,他们正在根据所有博文过滤它,只要我已经提交了 1,它肯定存在。如果您也需要我的 forms.py 和 urls.py,请告诉我。
视图.py
def submit_interest_view(request, slug):
form = SubmitInterestForm()
user = request.user
blog_post = get_object_or_404(BlogPost, slug=slug)
num_blogpost = BlogPost.objects.filter(author=user).count()
if blog_post.author.email == user.email:
return HttpResponse('You cannot submit interest to your own post.')
if Interest.objects.filter(user=request.user).exists() and request.method=="POST":
return HttpResponse('You have already submitted your interest to this post.')
if request.method == 'POST':
form = SubmitInterestForm(request.POST, request.FILES)
if form.is_valid():
obj = form.save(commit=False)
obj.user = user
obj.blog_post = blog_post
obj.save()
InterestInvite.objects.create(interest=obj)
messages.success(request, 'Your interests have been submitted', extra_tags='submittedinterest')
return redirect(reverse('HomeFeed:main'))
else:
messages.warning(request, 'Something went wrong. Please try again..', extra_tags='wronginterest')
return render(request, "HomeFeed/submitinterest.html", {'form': form,'user': user, 'num_blogpost': num_blogpost, 'blog_post': blog_post})
else:
form = SubmitInterestForm()
return render(request, "HomeFeed/submitinterest.html", {'form': form,'user': user, 'num_blogpost': num_blogpost, 'blog_post': blog_post})
模型.py
class Interest(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
timestamp = models.DateTimeField(auto_now_add=True)
is_active = models.BooleanField(blank=False, null=False, default=True)
my_thoughts = models.TextField(max_length=5000, null=False, blank=False)
blog_post = models.ForeignKey(BlogPost, on_delete=models.CASCADE)
class BlogPost(models.Model):
chief_title = models.CharField(max_length=50, null=False, blank=False, unique=True)
body = models.TextField(max_length=5000, null=False, blank=False)
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
slug = models.SlugField(blank=True, unique=True)
解决方案
您确实检查是否已经存在 Interest 对象
Interest.objects.filter(user=request.user).exists():
而不是查看特定帖子上该用户是否有兴趣行
Interest.objects.filter(user=request.user, blog_post=blog_post).exists()
推荐阅读
- javascript - 字符串类型和文本输出格式
- python - 如何从带有子框架的网站中抓取信息
- spring-boot - 在 IBM Liberty 服务器中安装 ojdbc8 jar 文件
- python - 无法打印一次以完全获取所有数据
- machine-learning - 需要帮助找出我在使用一个变量的线性回归的梯度下降代码中做错了什么
- android - ProgressBar 不会在代码中的任何地方加载
- android - BitmapFactory:无法解码流:java.io.FileNotFoundException:.jpg(没有这样的文件或目录)
- nginx - 当我尝试创建自定义 server_name 时,它只停留在默认的 Nginx 页面
- java - 我想制作一个随机图像生成器,但它不起作用
- c# - unity上传播放器数据文本文件到服务器,需要一些引导格式