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
但是如果使用分页,请小心,您现在评估的是整个未读项目集,而不是一页的内容。感谢您的回答和超级有用的参考资料,完美地解决了我的问题。感谢您的回答和超级有用的参考资料,完美地解决了我的问题。