สมมติว่าฉันมีโมเดลนี้:
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:
somePhotos = a.photo_set.filter(format=1)
จากนั้นจะมีคำถามมากมายด้วยWHERE format = 1
! ฉันทำอะไรผิดหรือ django ไม่ฉลาดพอที่จะรู้ว่ามันดึงรูปภาพทั้งหมดมาแล้วและสามารถกรองเป็น python ได้หรือไม่? ฉันสาบานว่าฉันอ่านที่ไหนสักแห่งในเอกสารว่าควรจะทำอย่างนั้น ...