在我的userprofile模型中,我有一个方法(变成一个属性),返回基于另一个模型的自定义管理器的查询集。Django queryset自定义管理器 - 刷新缓存
具体来说,用户可以销售不易腐烂和易腐烂的物品,并且在物料模型级别上,包含逻辑(并返回查询集)的几个自定义管理器生存以确定物品是否已经消失。内USERPROFILE,方法生活,返回了类似于:
Item.live_objects.filter(seller=self.user),
其中non_perished_objects是上述常规管理公司之一。
如果添加了一个项目,它永远不会通过这些userprofile方法反映出来。只有在重新启动服务器(以及正在重新填充查询集缓存)时,结果才是正确的。
有没有办法强制Django重新加载数据并删除缓存的数据?
在此先感谢!
更新:
class LiveItemsManager(models.Manager):
kwargs = {'perished': False,
'schedule__start_date__lte': datetime.datetime.now(),
'schedule__end_date__gt': datetime.datetime.now()}
def get_query_set(self):
return super(LiveItemsManager, self).get_query_set().filter(**self.kwargs)
class Item(models.Model):
live_objects = LiveItemsManager()
perished = models.BooleanField(default=False)
seller = models.ForeignKey(User)
正如你看到的,也有一个时间表模型,包含起始日期,一个end_data和ITEM_ID场。
在用户配置模式,我有:
def _get_live_items(self):
results = Item.live_objects.filter(seller=self.user)
return results
live_items = property(_get_live_items)
的问题是,调用live_items属性时,返回的结果是只缓存的结果。
(PS:不介意模型的建立;还有一个原因模型是它们是什么:))
您需要显示更多代码 - 整个方法以及调用它的管理器。 – 2010-10-24 21:25:08