Python 类型为'的对象;组合表达式';JSON不可序列化

Python 类型为'的对象;组合表达式';JSON不可序列化,python,json,ajax,django,Python,Json,Ajax,Django,我已经在我的应用程序中为评论设置了喜欢/不喜欢功能,但当用户第一次单击喜欢或不喜欢时,它会给我错误,我在标题中指出了这一点。但这种情况只是第一次发生,如果用户再次单击“喜欢”或“不喜欢”,则效果完全正常 “组合表达”到底是什么 my views.py: @login_required(login_url='/accounts/login/') def like(request, comment_id): comment = get_object_or_404(Comments, pk=c

我已经在我的应用程序中为评论设置了喜欢/不喜欢功能,但当用户第一次单击喜欢或不喜欢时,它会给我错误,我在标题中指出了这一点。但这种情况只是第一次发生,如果用户再次单击“喜欢”或“不喜欢”,则效果完全正常

“组合表达”到底是什么

my views.py:

@login_required(login_url='/accounts/login/')
def like(request, comment_id):
    comment = get_object_or_404(Comments, pk=comment_id)
    if request.POST:
        # handling like or dislike
    if request.is_ajax():
        return JsonResponse({'cmplus':comment.cmpvote, 'cmminus':comment.cmmvote})

    return HttpResponseRedirect(my reverse return)

作为记录,我必须说cmpNote和cmmvote是评论的喜欢和不喜欢的数量,是默认值为0的整数。

如果请求,在
中会发生什么。POST
部分?有没有只在第一次点击时发生的事情

CombinedExpression
是Django的
F
函数的结果。所以如果你做类似的事情

comment.cmpvote = F('cmpvote') + 1
comment.cmpvote
的值将为

<CombinedExpression: F(cmpvote) + Value(1)>

而不是实际的票数


要解决此问题,请在序列化对象之前调用
comment.refresh\u from\u db()

问题在于F函数。我应该在保存新数据或您的建议时使用“更新”功能。谢谢