我們有一個Dialog和一個Comment對象。我們在Dialog上有一個非規範化的字段num_comments來跟蹤評論的數量。當新評論被保存(或刪除)時,我們想要正確增加/減少此值。count()在post_save中返回零個點擊
# sender=Comment, called post_save and post_delete
def recalc_comments(sender, instance, created=False, **kwargs):
# Comments that will be deleted might not have a dialog (when dialog gets deleted)
if not hasattr(instance, "dialog"):
return
dialog = instance.dialog
dialog.update(
num_comments = sender.public.filter(dialog=dialog).count(),
num_commentators = sender.public.filter(dialog=dialog).aggregate(c=Count('user', distinct=True))["c"],
)
已經開始出現的問題是,對於第一條評論發佈,num_comments查詢返回零。這不會每次都發生,只有在aprox的情況下才會發生。 >結果集中的1000條評論(不多,我知道...)。
當count()被執行時,註釋是否還沒有被保存到數據庫?使事情進一步複雜化,我們使用Johnny Cache(和memcached)作爲ORM和數據庫之間的一個層。
任何輸入將不勝感激!
嘗試至少在禁用緩存的情況下進行測試。問題仍然存在嗎? – DrTyrsa 2012-02-09 08:50:16
你可以發佈你的模型,所以我們可以看到問題是否在其他地方? – nicowernli 2012-02-09 15:56:54