在我的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