python - AttributeError:“str”对象没有属性“likes”
问题描述
我正在尝试获取与帖子相关的点赞数,因此我创建了以下内容:帖子模型:
class Post(models.Model):
title = models.CharField(max_length=100, unique=True)
likes = models.IntegerField(default=0)
我已经能够得到否。喜欢,但我正在尝试一种不同的方法,我只是想知道该方法是如何工作的。
以下是我在点赞时尝试添加的视图
def like_post(request):
user = request.user
post = request.POST.get('post_id')
current_likes = post.likes <------------Error coming from here
if request.method == 'POST':
post_obj = Post.objects.get(id=post)
if user in post_obj.liked.all():
post_obj.liked.remove(user)
current_likes = current_likes - 1
else:
post_obj.liked.add(user)
current_likes = current_likes + 1
post.likes=current_likes
post.save()
like, created = Like.objects.get_or_create(user=user, post_id=post)
if not created:
if like.value == 'Like':
like.value = 'Unlike'
else:
like.value = 'Like'
like.save()
context = {
'post': post,
}
return redirect('blog:post-detail', slug=post_obj.slug)
现在的问题是我收到
AttributeError at /blogs/like
'str' object has no attribute 'likes'
我试图修复它,但我不知道如何。 错误来源在这里突出显示:
current_likes = post.likes
解决方案
那部分没有多大意义:
post = request.POST.get('post_id')
current_likes = post.likes
if request.method == 'POST':
post_obj = Post.objects.get(id=post)
因为您在访问request.POST
之前甚至检查请求方法是否为POST
. 将其更改为:
if request.method == 'POST':
post = request.POST.get('post_id')
post_obj = Post.objects.get(id=post)
current_likes = post_obj.likes
推荐阅读
- sql - SQL 查询 - 如何将此 excel 公式转换为查询
- node.js - Express Handlebars 拒绝访问 mongoose 对象
- python - pyinstaller 支持 zeep 吗?
- php - 从 php 表 wordpress 中获取值
- sql - POSTGRESQL 将日期转换为 unix 时间戳 int
- scala - Spark Scala 时间戳比较
- graphql - GraphQLUnion 与 GraphQLList
- batch-file - 如何在双引号字符串中转义转义“=”或等于登录批处理脚本
- json - ValueError: arrays must be all the same length - 将 JSON 解析为 Pandas DataFrame
- github3.py - 使用 github3 库的仓库列表