Với mô hình sau, Django có lưu vào bộ nhớ cache các đối tượng liên quan sau lần đầu tiên chúng được truy cập không?Trường Django cache có liên quan đến các trường ForeignKey và ManyToManyField khi chúng được truy cập không?
class Post(models.Model):
authors = models.ManyToManyField(User)
category = models.ForeignKey(Category)
Ví dụ:
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
Lưu ý: hiện đang làm việc với Django 1.3, nhưng đó là tốt để biết những gì có sẵn trong các phiên bản khác.
Vẫn chưa hoàn toàn đúng. Các truy vấn ManyToMany không được lưu trữ ở tất cả - chúng thực sự chỉ tương đương với các tra cứu FK ngược lại, do đó, không được lưu trữ ngoại trừ khi sử dụng chức năng 'prefetch_related' mới trong 1.4. –
Cảm ơn. Tôi sẽ tự xử lý bộ nhớ đệm trên các trường ManyToMany khi cần thiết. – bpscott
Câu trả lời cần được khắc phục và kiểm tra tốt hơn. Tôi không thấy bộ nhớ đệm trong cả hai trường hợp trong DJ 1.5. – Bryce