Django返回`无法分配“1”:“Likes.user_id”必须是“Users”实例`

Django返回`无法分配“1”:“Likes.user_id”必须是“Users”实例`,django,python-2.7,django-models,django-views,django-related-manager,Django,Python 2.7,Django Models,Django Views,Django Related Manager,我有这些模型,我花了一整夜的时间试图找出我如何能保存到喜欢的桌子上,但这不仅仅是工作 class Users(models.Model): email = models.EmailField() name = models.CharField(max_length=60) class Posts(models.Model): user_id = models.ForeignKey('Users') content = models.CharField(max_l

我有这些模型,我花了一整夜的时间试图找出我如何能保存到喜欢的桌子上,但这不仅仅是工作

class Users(models.Model):
    email = models.EmailField()
    name = models.CharField(max_length=60)

class Posts(models.Model):
    user_id = models.ForeignKey('Users')
    content = models.CharField(max_length=480)

class Likes(models.Model):
    post_id = models.ForeignKey('Posts', related_name='likes_set')
    user_id = models.ForeignKey('Users')
    status = models.IntegerField()
假设user_id1=1并且确实存在于表中,post_id11=11并且也存在,这个用户点击这个post

现在我想把钱存到喜欢的桌子上,这就是我所做的

user = Users.objects.get(id = user_id1)
post = user.posts_set.get(id = post_id11)
try:
    liked = post.likes_set.get(user_id = user_id1)
except Likes.DoesNotExist:
    liked = None
if liked:
    liked.status = F('status') - 1
    liked.save()
    total_likes = liked.status
    return HttpResponse(total_likes)
else:
    post.likes_set.create(user_id = user_id1, post_id = post_id11, status = 1)
    post.likes = F('likes') + 1
    post.save()
    total_likes = post.likes
    return HttpResponse(total_likes)
这就是错误: /myapp/LikerRecorder处的值错误/ 无法分配1:Likes.user\u id必须是用户实例

为了解决这个问题,我在谷歌上搜索了一整夜。救命啊

在post.likes\u set.createuser\u id=user\u id1,post\u id=post\u id11,status=1中,将user\u id=user\u id1替换为user\u id=user,因为您之前定义了user,user=Users.objects.getid=user\u id1

在赋值方面,Django在将变量的类型赋给manager.create时检查它的类型


另外,您不必将您的外键命名为xxx\u id。我认为这不是很有语义。

名为foo的外键的id属性被命名为foo\u id。因为您已经将您的FK用户id命名为。。。一些原因是,ID属性名为user\u ID\u ID。

这不起作用。它返回匹配的查询不存在。在同一行中,出于相同的原因,post\u id=post\u id11应更改为post\u id=post。这样,两个ForeignKey的要求都得到了满足。谢谢,但它返回的DoesNotExist at/myapp/likeRecorder/Likes匹配查询不存在。在将user\u id更改为user\u id\u id之后,我还尝试将post\u id更改为post\u id\u id,但错误仍然是一样的。有趣的是,我刚刚检查了我的数据库,当我单击posts时它正在更新,但代码仍然返回错误。为什么不在问题中添加错误回溯,很难理解为什么这个错误发生在一行中。