Python Django-基于同一对象上的过滤器停止不同变量之间的同步

Python Django-基于同一对象上的过滤器停止不同变量之间的同步,python,django,python-3.x,Python,Django,Python 3.x,对不起,这个问题很困惑,不知道如何正确描述它 假设我有一个名为News的模型,一个变量News将用于存储未读News的过滤结果,属性为read=False,并将这些News标记为read=True,然后将这些News返回模板。问题是在更新read=True之后,应该存储初始未读news的原始变量news将变为空。这背后的方法是什么?如何停止同步 代码示例: class News(models.Model): ... read = models.BooleanField(defau

对不起,这个问题很困惑,不知道如何正确描述它

假设我有一个名为
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
谢谢你的回答。

因为。在实际遍历queryset之前,不会计算结果,而在代码中,queryset可能发生在模板中

您可以先转换为列表:

news_to_read = list(news)
news.update(read=True)
return news_to_read
但是如果使用分页,请小心,您现在评估的是整个未读项目集,而不是一页的内容。

因为。在实际遍历queryset之前,不会计算结果,而在代码中,queryset可能发生在模板中

您可以先转换为列表:

news_to_read = list(news)
news.update(read=True)
return news_to_read

但是如果使用分页,请小心,您现在评估的是整个未读项目集,而不是一页的内容。

感谢您的回答和超级有用的参考资料,完美地解决了我的问题。感谢您的回答和超级有用的参考资料,完美地解决了我的问题。