2011-09-13 24 views
1

我是一个Django noob,所以我很抱歉如果这是一个愚蠢的简单问题。Django - 当来自查询的数据实际上被读取时

下面的代码:

try: 
    m = Message.objects.get(session=request.session.session_key) 
except: 
    return {'message_status':'','message_text':''} 

current_status = m.status 
current_text = m.text 

m.delete() 

我期望CURRENT_STATUS和current_text被保留了,但事实并非如此。怎么了?

谢谢!

+0

什么是“保存”应该是什么意思? –

+0

意思是,我将current_status和current_text传递给模板。如果我注释掉m.delete()行,则会填充current_status和current_text,但现在它们是空白的。 –

+0

如果您喜欢答案,请标记为已接受。 – Thomas

回答

0

要解决您的问题,只需在删除对象之前执行切片以创建字符串的副本。

current_status = m.status[:] 
current_text = m.text[:] 

m.delete() 

编辑:编辑:你为什么不使用django.contrib.messages!?

+0

这不是Python中的变量是如何工作的。即使删除了对象,本地变量仍然会引用字符串。 –

+0

@Daniel我同意如果你只是删除模型对象的字符串仍然可以访问,但调用.delete()方法会做额外的清理工作,并摆脱基础数据。 – Thomas

+0

但这只是[不正确](http://dpaste.com/614607/)。 –