On May 26, 10:26 pm, Chris Seberino <cseber...@gmail.com> wrote: > I have Homework objects that are related to Course objects for a > school related Django app. I can access Course and Homework objects > but there is one Homework query at the end of this email that bombs > and I don't know why. > > =================================================================== > First I'll show a few working queries to show that everything is sane > and working.... > =================================================================== > > >>> Course.objects.filter(subject="Algebra 1", year=2011, session="Fall") > > [<Course: Course object>] > > >>> Course.objects.filter(year=2011) > > [<Course: Course object>, <Course: Course object>, <Course: Course > object>, <Course: Course object>, <Course: Course object>, <Course: > Course object>, <Course: Course object>, <Course: Course object>, > <Course: Course object>, <Course: Course object>] > > >>> course = Course.objects.filter(year=2011)[0] > >>> Homework.objects.filter(course=course) > > [<Homework: Homework object>, <Homework: Homework object>, ... etc.] > (truncated by me) > > >>> Homework.objects.filter(course__session="Fall") > > [<Homework: Homework object>, <Homework: Homework object>, ... etc.] > (truncated by me) > > ==================================================================== > Here is the mystery one that bombs and I don't know why: > ==================================================================== > > >>> Homework.objects.filter(course__year=2011) > > Traceback (most recent call last): > File "<console>", line 1, in <module> > File "/usr/lib/pymodules/python2.6/django/db/models/manager.py", > line 141, in filter > return self.get_query_set().filter(*args, **kwargs) > File "/usr/lib/pymodules/python2.6/django/db/models/query.py", line > 550, in filter > return self._filter_or_exclude(False, *args, **kwargs) > File "/usr/lib/pymodules/python2.6/django/db/models/query.py", line > 568, in _filter_or_exclude > clone.query.add_q(Q(*args, **kwargs)) > File "/usr/lib/pymodules/python2.6/django/db/models/sql/query.py", > line 1128, in add_q > can_reuse=used_aliases) > File "/usr/lib/pymodules/python2.6/django/db/models/sql/query.py", > line 1071, in add_filter > connector) > File "/usr/lib/pymodules/python2.6/django/db/models/sql/where.py", > line 66, in add > value = obj.prepare(lookup_type, value) > File "/usr/lib/pymodules/python2.6/django/db/models/sql/where.py", > line 299, in prepare > return self.field.get_prep_lookup(lookup_type, value) > File "/usr/lib/pymodules/python2.6/django/db/models/fields/ > related.py", line 139, in get_prep_lookup > raise TypeError("Related Field has invalid lookup: %s" % > lookup_type) > TypeError: Related Field has invalid lookup: year
Probably what happens here is that the 'year' part of the course__year lookup is mistaken for a date lookup 'year' (you could do a query like datetimefield__year=2011). What version of Django are you using? 1.4 should contain a fix for this: https://code.djangoproject.com/ticket/11670. If you can't upgrade, it might be possible that course__year__exact=2011 will work. Not sure though. - Anssi -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.