gpt4 book ai didi

python - Django:无法分配 "u' 1'": "Likes.post"必须是 "Post"实例

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:39 24 4
gpt4 key购买 nike

我有一个名为 Likes 的模型:模型:喜欢:

class Likes(models.Model):
def __str__(self):
return post

post = models.ForeignKey(Post,on_delete=models.CASCADE)
user_id = models.ForeignKey(User,on_delete=models.CASCADE)

查看喜欢:

def like(request,post_id = None):
like = Likes.objects.create(post=post_id,user_id=request.session['user_id'])

try:
like.save()
except like.DoesNotExist:
cannot = "true"
return HttpResponse(json.dumps(cannot),content_type="application/json")
cannot = "false"
return HttpResponse(json.dumps(cannot),content_type="application/json")

我的 html 是:

like

当我点击时出现这个错误

Cannot assign "u'1'": "Likes.post" must be a "Post" instance.

我是 django 的新手。请帮我解决这个错误。还是我在联想方面做错了?

最佳答案

如错误所述,您应该将 Post 实例分配给 post 字段,但您正在尝试分配 id '1' 相反。

您可以先从数据库中获取post:

from django.shortcuts import get_object_or_404

post = get_object_or_404(Post, id=post_id)
Likes.objects.create(post=post, user_id=request.session['user_id'])

或者你可以将id直接分配给post_id:

Likes.objects.create(post_id=post_id, user_id=request.session['user_id'])

获取帖子可能更好,因为它会检查 post_id 是否指向有效帖子。如果找不到具有该 ID 的帖子,get_object_or_404 快捷方式将返回 404 错误页面。

顺便说一句,如果您使用 Django 的身份验证,则可以更容易地从 request.user 获取用户:

Likes.objects.create(post=post, user=request.user)

关于python - Django:无法分配 "u' 1'": "Likes.post"必须是 "Post"实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37410495/

24 4 0