对于这个困惑的问题感到抱歉,不确定如何正确描述。
假设我有一个名为News
的模型,变量news
将用于存储具有属性News
的未读read=False
的过滤结果,将这些news
标记为read=True
,然后将这些news
返回给模板。问题是在更新read=True
之后,应存储初始未读news
的原始变量news
将变为空。这背后的方法是什么以及如何停止这种同步?
代码示例:
class News(models.Model):
...
read = models.BooleanField(default=False)
def foo(self):
news = News.object.filter(read=False) # get un-read news correctly
news.update(read=True) # update stored news successfully, but news will become empty
return news # return empty news instead of original filter result
感谢您的回答。
答案 0 :(得分:2)
因为querysets are lazy。在您实际遍历查询集之前,不会对结果进行评估,在您的代码中可能会在模板中进行迭代。
您可以先转换为列表:
if(document.getElementById('#yourinputid').value != ""){
document.getElementById('#yourinputid').disabled = "false";
}
但是如果你正在使用分页,要小心,你现在正在评估整套未读项目,而不仅仅是一页。