मान लीजिए मेरे पास यह मॉडल है:
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()
यह केवल दो प्रश्न करता है, जो कि मैं उम्मीद करता हूं (एक एल्बम प्राप्त करने के लिए, और फिर एक का चयन करें जैसे फोटो में * फोटोलेब्युम_आईडी इन ()।
प्रत्येक वस्तु उत्तम हैं।
लेकिन अगर मैं ऐसा करता हूं:
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 इतना स्मार्ट नहीं है कि यह महसूस कर सके कि वह पहले ही सभी तस्वीरें ले चुका है और उन्हें अजगर में फ़िल्टर कर सकता है? मैं कसम खाता हूं कि मैंने कहीं दस्तावेज में पढ़ा है कि ऐसा करना चाहिए ...