0

我有这些models,我整晚都在努力想知道如何保存到Likes桌子上,但它不会起作用。

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也存在,且该用户点击该帖子。

现在我想保存到 Likes 表,这就是我所做的;

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)

这是错误: ValueError at /myapp/likeRecorder/ Cannot assign "1": "Likes.user_id" must be a "Users" instance.

我整晚都在谷歌上试图解决这个问题。帮助!

4

2 回答 2

0

post.likes_set.create(user_id = user_id1, post_id = post_id11, status = 1)替换为user_id = user_id1,user_id = user因为您user之前定义了 , user = Users.objects.get(id = user_id1)

在赋值方面,当你将变量赋值给manager.create.

此外,您不必将您的命名ForeignKeyxxx_id. 我认为这不是很语义化。

于 2014-10-03T04:12:03.943 回答
0

named的 ID 属性是ForeignKeynamed 。由于您已经将 FK 命名为...一些...“原因”,因此 ID 属性命名为.foofoo_iduser_iduser_id_id

于 2014-10-03T04:27:37.283 回答