#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.