#19607: prefetch_related crash
-------------------------------------+-------------------------------------
     Reporter:  av@…                 |                    Owner:  nobody
         Type:  Bug                  |                   Status:  new
    Component:  Database layer       |                  Version:  1.4
  (models, ORM)                      |               Resolution:
     Severity:  Normal               |             Triage Stage:
     Keywords:  prefetch             |  Unreviewed
  prefetch_related                   |      Needs documentation:  0
    Has patch:  1                    |  Patch needs improvement:  0
  Needs tests:  0                    |                    UI/UX:  0
Easy pickings:  0                    |
-------------------------------------+-------------------------------------

Comment (by flarno11@…):

 For me it happens with these models:

 {{{
 from django.db import models

 class Lesson(models.Model):
     name = models.CharField(max_length=200)

     def __unicode__(self):
         return self.name

 class LessonEntry(models.Model):
     lesson = models.ForeignKey(Lesson)

     def __unicode__(self):
         return self.lesson.__unicode__() + " - " + self.name1 + " - " +
 self.name2


 class WordEntry(models.Model):
     lessonEntry = models.ForeignKey(LessonEntry)
     name = models.CharField(max_length=200)

     def __unicode__(self):
         return self.name + ' (' + self.lang_id + ',' + str(self.id) + ')'
 }}}

 and this query:
 {{{
 >>> from zfvocapp.models import *
 >>>
 
WordEntry.objects.filter(lessonEntry__lesson_id=57).prefetch_related('lessonEntry').prefetch_related('lessonEntry__wordentry_set')
 Traceback (most recent call last):
   File "<console>", line 1, in <module>
   File "/Users/flo/Projects/zfvocapp/zfvocapp/venv/lib/python2.7/site-
 packages/django/db/models/query.py", line 77, in __repr__
     data = list(self[:REPR_OUTPUT_SIZE + 1])
   File "/Users/flo/Projects/zfvocapp/zfvocapp/venv/lib/python2.7/site-
 packages/django/db/models/query.py", line 102, in __iter__
     len(self)
   File "/Users/flo/Projects/zfvocapp/zfvocapp/venv/lib/python2.7/site-
 packages/django/db/models/query.py", line 94, in __len__
     self._prefetch_related_objects()
   File "/Users/flo/Projects/zfvocapp/zfvocapp/venv/lib/python2.7/site-
 packages/django/db/models/query.py", line 601, in
 _prefetch_related_objects
     prefetch_related_objects(self._result_cache,
 self._prefetch_related_lookups)
   File "/Users/flo/Projects/zfvocapp/zfvocapp/venv/lib/python2.7/site-
 packages/django/db/models/query.py", line 1746, in
 prefetch_related_objects
     obj_list, additional_prl = prefetch_one_level(obj_list, prefetcher,
 attr)
   File "/Users/flo/Projects/zfvocapp/zfvocapp/venv/lib/python2.7/site-
 packages/django/db/models/query.py", line 1878, in prefetch_one_level
     obj._prefetched_objects_cache[cache_name] = qs
 AttributeError: 'LessonEntry' object has no attribute
 '_prefetched_objects_cache'
 }}}


 but only when larger results are returned. and only with a postgresql
 database and not with sqlite.

 this is the relevant part of the data dump:
 {{{
 CREATE TABLE zfvocapp_lesson (
     id integer NOT NULL,
     "languagePair_id" integer NOT NULL,
     name character varying(200) NOT NULL,
     "createdAt" timestamp with time zone NOT NULL,
     "modifiedAt" timestamp with time zone NOT NULL
 );

 CREATE TABLE zfvocapp_lessonentry (
     id integer NOT NULL,
     lesson_id integer NOT NULL,
     name1 character varying(200) NOT NULL,
     name2 character varying(200) NOT NULL,
     "createdAt" timestamp with time zone NOT NULL,
     "modifiedAt" timestamp with time zone NOT NULL
 );

 CREATE TABLE zfvocapp_wordentry (
     id integer NOT NULL,
     "lessonEntry_id" integer NOT NULL,
     name character varying(200) NOT NULL,
     lang_id character varying(2) NOT NULL,
     "createdAt" timestamp with time zone NOT NULL,
     "modifiedAt" timestamp with time zone NOT NULL
 );


 INSERT INTO zfvocapp_lesson VALUES (57, 2, 'Adjectives', '2013-05-22
 20:57:05.105265+00', '2013-05-22 20:57:05.105292+00');

 INSERT INTO zfvocapp_lessonentry VALUES (2163, 57, 'jung', 'young',
 '2013-05-22 20:57:19.760508+00', '2013-05-22 20:57:19.800419+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2164, 57, 'schwarz', 'black',
 '2013-05-22 21:10:43.795717+00', '2013-05-22 21:10:43.842123+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2172, 57, 'klein', 'small',
 '2013-05-22 21:12:27.245094+00', '2013-05-22 21:12:27.281923+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2165, 57, 'weiss', 'white',
 '2013-05-22 21:10:47.624582+00', '2013-05-22 21:10:47.652554+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2176, 57, 'glücklich', 'happy',
 '2013-05-22 21:13:50.657134+00', '2013-05-22 21:13:50.686634+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2161, 57, 'neu', 'new',
 '2013-05-22 20:57:12.437383+00', '2013-05-22 20:57:12.656672+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2167, 57, 'rot', 'red',
 '2013-05-22 21:10:56.728158+00', '2013-05-22 21:10:56.759907+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2162, 57, 'alt', 'old',
 '2013-05-22 20:57:15.962352+00', '2013-05-22 20:57:15.992568+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2166, 57, 'blau', 'blue',
 '2013-05-22 21:10:53.223907+00', '2013-05-22 21:10:53.25234+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2173, 57, 'gross', 'big',
 '2013-05-22 21:12:29.415916+00', '2013-05-22 21:12:29.451332+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2168, 57, 'gelb', 'yellow',
 '2013-05-22 21:11:02.103493+00', '2013-05-22 21:11:02.136576+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2169, 57, 'grün', 'green',
 '2013-05-22 21:11:06.374137+00', '2013-05-22 21:11:06.402334+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2170, 57, 'braun', 'brown',
 '2013-05-22 21:11:10.078453+00', '2013-05-22 21:11:10.106392+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2174, 57, 'offen', 'open',
 '2013-05-22 21:13:03.851302+00', '2013-05-22 21:13:03.878534+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2171, 57, 'grau', 'grey',
 '2013-05-22 21:11:13.454313+00', '2013-05-22 21:11:13.485365+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2178, 57, 'wach', 'awake',
 '2013-05-22 21:14:09.255321+00', '2013-05-22 21:14:09.292234+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2175, 57, 'geschlossen',
 'closed', '2013-05-22 21:13:08.348016+00', '2013-05-22
 21:13:08.376036+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2180, 57, 'gesund', 'healthy',
 '2013-05-22 21:14:28.173758+00', '2013-05-22 21:14:28.199705+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2177, 57, 'traurig', 'sad',
 '2013-05-22 21:13:53.405936+00', '2013-05-22 21:13:53.451009+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2179, 57, 'müde', 'tired',
 '2013-05-22 21:14:11.456667+00', '2013-05-22 21:14:11.484829+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2181, 57, 'krank', 'sick',
 '2013-05-22 21:14:31.414327+00', '2013-05-22 21:14:31.446299+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2182, 57, 'nett', 'nice',
 '2013-05-22 21:15:15.143002+00', '2013-05-22 21:15:15.184282+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2183, 57, 'lieb', 'dear',
 '2013-05-22 21:15:19.547128+00', '2013-05-22 21:15:19.574394+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2184, 57, 'schön', 'beautiful',
 '2013-05-22 21:15:29.416505+00', '2013-05-22 21:15:29.444392+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2185, 57, 'schrecklich', 'awful',
 '2013-05-22 21:15:55.308258+00', '2013-05-22 21:15:55.335381+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2186, 57, 'weiblich', 'female',
 '2013-05-22 21:16:18.967918+00', '2013-05-22 21:16:18.993677+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2187, 57, 'männlich', 'male',
 '2013-05-22 21:16:21.355328+00', '2013-05-22 21:16:21.387481+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2189, 57, 'langsam', 'slow',
 '2013-05-22 21:16:40.855376+00', '2013-05-22 21:16:40.889525+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2188, 57, 'schnell', 'quick',
 '2013-05-22 21:16:37.217384+00', '2013-05-22 21:16:44.05579+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2190, 57, 'einfach', 'simple',
 '2013-05-22 21:17:13.138712+00', '2013-05-22 21:17:13.164846+00');
 INSERT INTO zfvocapp_lessonentry VALUES (2191, 57, 'schwierig',
 'difficult', '2013-05-22 21:17:16.858922+00', '2013-05-22
 21:17:16.886086+00');

 INSERT INTO zfvocapp_wordentry VALUES (4379, 2161, 'neu', 'de',
 '2013-05-22 20:57:12.493735+00', '2013-05-22 20:57:12.493775+00');
 INSERT INTO zfvocapp_wordentry VALUES (4380, 2161, 'new', 'en',
 '2013-05-22 20:57:12.628707+00', '2013-05-22 20:57:12.628734+00');
 INSERT INTO zfvocapp_wordentry VALUES (4381, 2162, 'alt', 'de',
 '2013-05-22 20:57:15.972969+00', '2013-05-22 20:57:15.972995+00');
 INSERT INTO zfvocapp_wordentry VALUES (4382, 2162, 'old', 'en',
 '2013-05-22 20:57:15.987178+00', '2013-05-22 20:57:15.987202+00');
 INSERT INTO zfvocapp_wordentry VALUES (4383, 2163, 'jung', 'de',
 '2013-05-22 20:57:19.782352+00', '2013-05-22 20:57:19.782377+00');
 INSERT INTO zfvocapp_wordentry VALUES (4384, 2163, 'young', 'en',
 '2013-05-22 20:57:19.795058+00', '2013-05-22 20:57:19.795082+00');
 INSERT INTO zfvocapp_wordentry VALUES (4385, 2164, 'schwarz', 'de',
 '2013-05-22 21:10:43.807224+00', '2013-05-22 21:10:43.807249+00');
 INSERT INTO zfvocapp_wordentry VALUES (4386, 2164, 'black', 'en',
 '2013-05-22 21:10:43.834102+00', '2013-05-22 21:10:43.834126+00');
 INSERT INTO zfvocapp_wordentry VALUES (4387, 2165, 'weiss', 'de',
 '2013-05-22 21:10:47.634643+00', '2013-05-22 21:10:47.634688+00');
 INSERT INTO zfvocapp_wordentry VALUES (4388, 2165, 'white', 'en',
 '2013-05-22 21:10:47.64728+00', '2013-05-22 21:10:47.647304+00');
 INSERT INTO zfvocapp_wordentry VALUES (4389, 2166, 'blau', 'de',
 '2013-05-22 21:10:53.233142+00', '2013-05-22 21:10:53.233167+00');
 INSERT INTO zfvocapp_wordentry VALUES (4390, 2166, 'blue', 'en',
 '2013-05-22 21:10:53.246826+00', '2013-05-22 21:10:53.24685+00');
 INSERT INTO zfvocapp_wordentry VALUES (4391, 2167, 'rot', 'de',
 '2013-05-22 21:10:56.738268+00', '2013-05-22 21:10:56.738295+00');
 INSERT INTO zfvocapp_wordentry VALUES (4392, 2167, 'red', 'en',
 '2013-05-22 21:10:56.753734+00', '2013-05-22 21:10:56.753758+00');
 INSERT INTO zfvocapp_wordentry VALUES (4393, 2168, 'gelb', 'de',
 '2013-05-22 21:11:02.115799+00', '2013-05-22 21:11:02.115828+00');
 INSERT INTO zfvocapp_wordentry VALUES (4394, 2168, 'yellow', 'en',
 '2013-05-22 21:11:02.129582+00', '2013-05-22 21:11:02.129605+00');
 INSERT INTO zfvocapp_wordentry VALUES (4395, 2169, 'grün', 'de',
 '2013-05-22 21:11:06.38426+00', '2013-05-22 21:11:06.384285+00');
 INSERT INTO zfvocapp_wordentry VALUES (4396, 2169, 'green', 'en',
 '2013-05-22 21:11:06.397273+00', '2013-05-22 21:11:06.397297+00');
 INSERT INTO zfvocapp_wordentry VALUES (4397, 2170, 'braun', 'de',
 '2013-05-22 21:11:10.088019+00', '2013-05-22 21:11:10.088059+00');
 INSERT INTO zfvocapp_wordentry VALUES (4398, 2170, 'brown', 'en',
 '2013-05-22 21:11:10.10077+00', '2013-05-22 21:11:10.100805+00');
 INSERT INTO zfvocapp_wordentry VALUES (4399, 2171, 'grau', 'de',
 '2013-05-22 21:11:13.464967+00', '2013-05-22 21:11:13.465002+00');
 INSERT INTO zfvocapp_wordentry VALUES (4400, 2171, 'grey', 'en',
 '2013-05-22 21:11:13.47939+00', '2013-05-22 21:11:13.479414+00');
 INSERT INTO zfvocapp_wordentry VALUES (4401, 2172, 'klein', 'de',
 '2013-05-22 21:12:27.254657+00', '2013-05-22 21:12:27.254682+00');
 INSERT INTO zfvocapp_wordentry VALUES (4402, 2172, 'small', 'en',
 '2013-05-22 21:12:27.276567+00', '2013-05-22 21:12:27.276591+00');
 INSERT INTO zfvocapp_wordentry VALUES (4403, 2173, 'gross', 'de',
 '2013-05-22 21:12:29.428584+00', '2013-05-22 21:12:29.42861+00');
 INSERT INTO zfvocapp_wordentry VALUES (4404, 2173, 'big', 'en',
 '2013-05-22 21:12:29.446156+00', '2013-05-22 21:12:29.446179+00');
 INSERT INTO zfvocapp_wordentry VALUES (4405, 2174, 'offen', 'de',
 '2013-05-22 21:13:03.860215+00', '2013-05-22 21:13:03.86024+00');
 INSERT INTO zfvocapp_wordentry VALUES (4406, 2174, 'open', 'en',
 '2013-05-22 21:13:03.872967+00', '2013-05-22 21:13:03.872992+00');
 INSERT INTO zfvocapp_wordentry VALUES (4407, 2175, 'geschlossen', 'de',
 '2013-05-22 21:13:08.35745+00', '2013-05-22 21:13:08.357475+00');
 INSERT INTO zfvocapp_wordentry VALUES (4408, 2175, 'closed', 'en',
 '2013-05-22 21:13:08.370163+00', '2013-05-22 21:13:08.370187+00');
 INSERT INTO zfvocapp_wordentry VALUES (4409, 2176, 'glücklich', 'de',
 '2013-05-22 21:13:50.668264+00', '2013-05-22 21:13:50.668289+00');
 INSERT INTO zfvocapp_wordentry VALUES (4410, 2176, 'happy', 'en',
 '2013-05-22 21:13:50.681382+00', '2013-05-22 21:13:50.681406+00');
 INSERT INTO zfvocapp_wordentry VALUES (4411, 2177, 'traurig', 'de',
 '2013-05-22 21:13:53.415872+00', '2013-05-22 21:13:53.415896+00');
 INSERT INTO zfvocapp_wordentry VALUES (4412, 2177, 'sad', 'en',
 '2013-05-22 21:13:53.444658+00', '2013-05-22 21:13:53.444682+00');
 INSERT INTO zfvocapp_wordentry VALUES (4413, 2178, 'wach', 'de',
 '2013-05-22 21:14:09.265285+00', '2013-05-22 21:14:09.265311+00');
 INSERT INTO zfvocapp_wordentry VALUES (4414, 2178, 'awake', 'en',
 '2013-05-22 21:14:09.285589+00', '2013-05-22 21:14:09.285613+00');
 INSERT INTO zfvocapp_wordentry VALUES (4415, 2179, 'müde', 'de',
 '2013-05-22 21:14:11.467629+00', '2013-05-22 21:14:11.467653+00');
 INSERT INTO zfvocapp_wordentry VALUES (4416, 2179, 'tired', 'en',
 '2013-05-22 21:14:11.479953+00', '2013-05-22 21:14:11.479977+00');
 INSERT INTO zfvocapp_wordentry VALUES (4417, 2180, 'gesund', 'de',
 '2013-05-22 21:14:28.18266+00', '2013-05-22 21:14:28.182686+00');
 INSERT INTO zfvocapp_wordentry VALUES (4418, 2180, 'healthy', 'en',
 '2013-05-22 21:14:28.194698+00', '2013-05-22 21:14:28.194722+00');
 INSERT INTO zfvocapp_wordentry VALUES (4419, 2181, 'krank', 'de',
 '2013-05-22 21:14:31.425494+00', '2013-05-22 21:14:31.425519+00');
 INSERT INTO zfvocapp_wordentry VALUES (4420, 2181, 'sick', 'en',
 '2013-05-22 21:14:31.439754+00', '2013-05-22 21:14:31.439778+00');
 INSERT INTO zfvocapp_wordentry VALUES (4421, 2182, 'nett', 'de',
 '2013-05-22 21:15:15.163646+00', '2013-05-22 21:15:15.16367+00');
 INSERT INTO zfvocapp_wordentry VALUES (4422, 2182, 'nice', 'en',
 '2013-05-22 21:15:15.177561+00', '2013-05-22 21:15:15.177585+00');
 INSERT INTO zfvocapp_wordentry VALUES (4423, 2183, 'lieb', 'de',
 '2013-05-22 21:15:19.557155+00', '2013-05-22 21:15:19.55718+00');
 INSERT INTO zfvocapp_wordentry VALUES (4424, 2183, 'dear', 'en',
 '2013-05-22 21:15:19.569411+00', '2013-05-22 21:15:19.569435+00');
 INSERT INTO zfvocapp_wordentry VALUES (4425, 2184, 'schön', 'de',
 '2013-05-22 21:15:29.426358+00', '2013-05-22 21:15:29.426389+00');
 INSERT INTO zfvocapp_wordentry VALUES (4426, 2184, 'beautiful', 'en',
 '2013-05-22 21:15:29.439535+00', '2013-05-22 21:15:29.439567+00');
 INSERT INTO zfvocapp_wordentry VALUES (4427, 2185, 'schrecklich', 'de',
 '2013-05-22 21:15:55.318041+00', '2013-05-22 21:15:55.318066+00');
 INSERT INTO zfvocapp_wordentry VALUES (4428, 2185, 'awful', 'en',
 '2013-05-22 21:15:55.330489+00', '2013-05-22 21:15:55.330513+00');
 INSERT INTO zfvocapp_wordentry VALUES (4429, 2186, 'weiblich', 'de',
 '2013-05-22 21:16:18.976889+00', '2013-05-22 21:16:18.976914+00');
 INSERT INTO zfvocapp_wordentry VALUES (4430, 2186, 'female', 'en',
 '2013-05-22 21:16:18.988711+00', '2013-05-22 21:16:18.988735+00');
 INSERT INTO zfvocapp_wordentry VALUES (4431, 2187, 'männlich', 'de',
 '2013-05-22 21:16:21.367447+00', '2013-05-22 21:16:21.367472+00');
 INSERT INTO zfvocapp_wordentry VALUES (4432, 2187, 'male', 'en',
 '2013-05-22 21:16:21.380302+00', '2013-05-22 21:16:21.380326+00');
 INSERT INTO zfvocapp_wordentry VALUES (4433, 2188, 'schnell', 'de',
 '2013-05-22 21:16:37.228106+00', '2013-05-22 21:16:37.22813+00');
 INSERT INTO zfvocapp_wordentry VALUES (4434, 2188, 'fast', 'en',
 '2013-05-22 21:16:37.24008+00', '2013-05-22 21:16:37.240104+00');
 INSERT INTO zfvocapp_wordentry VALUES (4435, 2189, 'langsam', 'de',
 '2013-05-22 21:16:40.868826+00', '2013-05-22 21:16:40.868851+00');
 INSERT INTO zfvocapp_wordentry VALUES (4436, 2189, 'slow', 'en',
 '2013-05-22 21:16:40.884681+00', '2013-05-22 21:16:40.884705+00');
 INSERT INTO zfvocapp_wordentry VALUES (4437, 2188, 'quick', 'en',
 '2013-05-22 21:16:44.041216+00', '2013-05-22 21:16:44.041242+00');
 INSERT INTO zfvocapp_wordentry VALUES (4438, 2190, 'einfach', 'de',
 '2013-05-22 21:17:13.147882+00', '2013-05-22 21:17:13.147906+00');
 INSERT INTO zfvocapp_wordentry VALUES (4439, 2190, 'simple', 'en',
 '2013-05-22 21:17:13.159739+00', '2013-05-22 21:17:13.159764+00');
 INSERT INTO zfvocapp_wordentry VALUES (4440, 2191, 'schwierig', 'de',
 '2013-05-22 21:17:16.86852+00', '2013-05-22 21:17:16.868544+00');
 INSERT INTO zfvocapp_wordentry VALUES (4441, 2191, 'difficult', 'en',
 '2013-05-22 21:17:16.881102+00', '2013-05-22 21:17:16.881126+00');
 }}}

 if that doesn't help i can also give you access to the database

-- 
Ticket URL: <https://code.djangoproject.com/ticket/19607#comment:18>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/067.931f3c1e34210f4af2e2c07d85dfc5c8%40djangoproject.com?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to