2017-08-12 27 views
0

私のアプリではコメントのために好き嫌いの機能を設定しましたが、ユーザーが好き嫌いを最初にクリックしたときに、しかしこれはちょうど最初に起こります。ユーザーが好きなものをクリックしたり、嫌いなことがあれば、それは完全にうまくいきます。タイプ 'CombinedExpression'のオブジェクトはJSONシリアライズ可能ではありません

"CombinedExpression"とは何ですか?

私のviews.py:私はcmpvoteとcmmvoteを言っているレコードの

@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) 

はどうなるのコメントのようにと嫌いの数であり、0

答えて

0

のデフォルトの整数ですif request.POST部分に?最初のクリックでのみ起こることはありますか?

CombinedExpressionは、DjangoのF機能の結果です。あなたは

comment.cmpvote = F('cmpvote') + 1 

ような何かを行うのであればcomment.cmpvoteの値は

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

なく投票の実際の数になります。

これを解決するには、オブジェクトをシリアル化する前にcomment.refresh_from_db()を呼び出します。

+0

問題はF関数でした。私は新しいデータや提案を保存するときに "更新"機能を使うべきだった。ありがとう。 –

関連する問題