不能对指定中介模型的ManyToManyField使用add()。用LikeTimestamp的经理代替

2024-09-29 22:25:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在我的博客里表现得很好。有问题,不知道如何使用这里的管理器。 我想这是我的主要错误。不能对指定中介模型的ManyToManyField使用add()。使用Posts.LikeTimestamp而是他的经理。在

我的模型:

class Like(models.Model):
    class Meta:
        db_table = 'like'
    post = models.OneToOneField(Post, null=True)
    liked_users = models.ManyToManyField(User, blank=True, through='LikeTimestamp')
    likes = models.IntegerField(default=0, blank=True)


class LikeTimestamp(models.Model):
    class Meta:
        db_table = 'liketimestamp'
    timestamp = models.DateTimeField(auto_now=True, auto_now_add=False)
    like = models.ForeignKey(Like)
    user = models.ForeignKey(User)

我的观点:

^{pr2}$

Tags: 模型addtruedbmodelmodelstablemeta
1条回答
网友
1楼 · 发布于 2024-09-29 22:25:18

我的朋友建议我去用户过滤器和错误消失了。还有一个关于喜欢的用户创建错误的行。我应该通过时间戳模型使用创建和删除。这是正确的代码。在

@login_required
def like_post(request, post_id):
    try:
        like, created = Like.objects.get_or_create(post_id=post_id)
        like.post = Post.objects.get(id=post_id)
        if like.liketimestamp_set.filter(user=request.user).exists():
            LikeTimestamp.objects.filter(like_id=like.id, user=request.user).delete()
            like.likes -= 1
        else:
            LikeTimestamp.objects.create(like_id=like.id, user=request.user)
            like.likes += 1
        like.save()
    except ObjectDoesNotExist:
        raise Http404
    return redirect(request.META.get('HTTP_REFERER'))

相关问题 更多 >

    热门问题