2日間私はDjangoプロジェクトのトランザクションの問題に固執しました。私はメッセンジャーシステムを開発しています。ユーザーにメッセージを送信すると、送信されたメッセージがoutbox div(jQuery/Ajaxで、更新ページではない)に正しく表示されます。さて、別のメッセージを送信すると、送信トレイに表示される新しいメッセージは以前送信されたものと同じになります。Djangoのクエリでデータベースから更新された情報を取得する方法は?
私が送るすべてのメッセージは、最初のものと同じです。データベーステーブルでは、メッセージはうまく保存されているので、問題はクエリから来ていると思います。
クエリは次です:
@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/')
のはライン "印刷sent.recipient.username" に注意を払ってみましょう。この行は常に最初のメッセージ受信者名を表示します。
私はこの問題について話しているstackoverflowの周りのいくつかのスレッドを読んでいますが、トランザクションを手作業で処理すると何の成功もありません。クエリの前に "Message.objects.update()"を作成しても動作しません。
提案がありますか?どのように起こっているのか分からないのは非常に面倒です。
モデルコードなどの情報が必要な場合は、教えてください。
ありがとうございます!
ああ私の神...今、それは... 2日間この愚かなことを解決しようと過ごした。 このためのスレッドを作成して申し訳ありません。非常に仲間ありがとう。 –
Yikes。あまりにも悪い気がしないでください...この種のことは、誰かが何らかのポイントでストライクしています! – Greg