2日間、Djangoプロジェクトのトランザクションの問題で立ち往生しています。メッセンジャーシステムを開発していますが、一部のユーザーにメッセージを送信すると、送信されたメッセージが送信トレイdivに正しく表示されます(ページの更新ではなく、jQuery / Ajaxを使用)。別のメッセージを送信すると、送信トレイに表示される新しいメッセージは以前に送信されたものと同じになります。
私が送信するすべてのメッセージは最初のようなものです。データベーステーブルではメッセージがうまく保存されているので、問題はクエリに起因すると思います。
次のクエリは次のとおりです。
@login_required(login_url='/')
def getmessage(request, mode=None):
if request.is_ajax():
if request.method == "GET":
# Retrieve last message sent by user
Message.objects.update()
q = Message.objects.filter(sender=request.user).order_by('send_at')[:1]
response = {}
for sent in q:
sent_message = {}
sent_message['recipient'] = sent.recipient.username
print sent.recipient.username
sent_message['body'] = sent.body
response.update({'sent': sent_message})
# Make json object
json = simplejson.dumps(response)
# Send answer to client side
return HttpResponse(json, mimetype='application/json')
else:
# No POST request, redirecting
return HttpResponseRedirect('/messenger/')
else:
# No AJAX request, redirecting
return HttpResponseRedirect('/messenger/')
「printsent.recipient.username」の行に注目しましょう。この行は常に最初のメッセージ受信者名を出力します。
私はこの問題について話しているstackoverflowの周りのいくつかのスレッドを読んでいますが、トランザクションを手動で処理しても成功していません。クエリの前に「Message.objects.update()」を作成しても機能しません。
なにか提案を?それがどのように起こっているのか理解できないのは非常に迷惑です。
モデルコードなどの詳細情報が必要な場合は、教えてください。
ありがとう!