鑑於以下模型,Django在第一次訪問它們之後緩存相關對象嗎?Django在訪問後是否緩存相關的ForeignKey和ManyToManyField字段?
class Post(models.Model):
authors = models.ManyToManyField(User)
category = models.ForeignKey(Category)
例如:
post = Post.objects.get(id=1)
# as i understand this hits the database
authors1 = post.authors.all()
# does this his the database again?
authors2 = post.authors.all()
# as i understand this hits the database
category1 = post.category
# does this hit the database again?
category2 = post.category
注:目前使用Django 1.3的工作,但它的好,知道什麼是在其他版本。
還是不太對。 ManyToMany查詢根本沒有被緩存 - 它們實際上等同於反向FK查找,所以不要緩存,除非在1.4中使用新的'prefetch_related'功能。 –
謝謝。必要時我會自己處理ManyToMany字段上的緩存。 – bpscott
答案需要修復並且更好,然後進行測試。在DJ1.5中我沒有看到任何一種情況下的緩存。 – Bryce