3
เหตุใด prefetch_related () ของ django จึงใช้ได้เฉพาะกับ all () และไม่กรอง ()
สมมติว่าฉันมีโมเดลนี้: class PhotoAlbum(models.Model): title = models.CharField(max_length=128) author = models.CharField(max_length=128) class Photo(models.Model): album = models.ForeignKey('PhotoAlbum') format = models.IntegerField() ตอนนี้ถ้าฉันต้องการดูรูปภาพส่วนย่อยในชุดย่อยของอัลบั้มอย่างมีประสิทธิภาพ ฉันทำสิ่งนี้: someAlbums = PhotoAlbum.objects.filter(author="Davey Jones").prefetch_related("photo_set") for a in someAlbums: somePhotos = a.photo_set.all() สิ่งนี้ทำเพียงสองแบบสอบถามเท่านั้นซึ่งเป็นสิ่งที่ฉันคาดหวัง (รายการหนึ่งจะได้รับอัลบั้มจากนั้นหนึ่งเช่น `` เลือก * ในรูปภาพ WHERE photoalbum_id IN () ทุกอย่างยอดเยี่ยมมาก แต่ถ้าฉันทำสิ่งนี้: someAlbums = PhotoAlbum.objects.filter(author="Davey Jones").prefetch_related("photo_set") for a in someAlbums: …