misalkan saya memiliki model ini:
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()
Sekarang jika saya ingin melihat subset foto dalam subset album secara efisien. Saya melakukannya seperti ini:
someAlbums = PhotoAlbum.objects.filter(author="Davey Jones").prefetch_related("photo_set")
for a in someAlbums:
somePhotos = a.photo_set.all()
Ini hanya melakukan dua kueri, yang saya harapkan (satu untuk mendapatkan album, dan satu lagi seperti `SELECT * IN photos WHERE photoalbum_id IN ().
Semuanya bagus.
Tetapi jika saya melakukan ini:
someAlbums = PhotoAlbum.objects.filter(author="Davey Jones").prefetch_related("photo_set")
for a in someAlbums:
somePhotos = a.photo_set.filter(format=1)
Kemudian ia melakukan banyak pertanyaan dengan WHERE format = 1
! Apakah saya melakukan sesuatu yang salah atau apakah Django tidak cukup pintar untuk menyadari bahwa ia telah mengambil semua foto dan dapat memfilternya dengan python? Saya bersumpah saya membaca di suatu tempat di dokumentasi bahwa itu seharusnya melakukan itu ...