0
2天后,我在我的Django项目中遇到了交易问题。我正在开发一个messenger系统,当我向某个用户发送消息时,发送的消息在发件箱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天试图解决这个愚蠢的事情。 对不起,因为为此创建了一个线程。非常感谢你的配偶。 –
哎呀。不要太难过......这种事情在某些时候会引起所有人的注意! – Greg