Opened 7 years ago

Last modified 7 years ago

#28175 closed Bug

__in query on parent model no longer works in 1.11 — at Version 1

Reported by: Daniel Keller Owned by: nobody
Component: Database layer (models, ORM) Version: 1.11
Severity: Release blocker Keywords:
Cc: Mariusz Felisiak, Simon Charette Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Daniel Keller)

I have models

class Place(models.Model):
    pass

class Community(Place):
    place_ptr = models.OneToOneField(Place, parent_link=True, on_delete=models.CASCADE,
        primary_key=True, serialize=False, related_name='+')

class Potential(models.Model):
    community = models.ForeignKey(Community, on_delete=CASCADE)

and in 1.10 I can do

Potential.objects.filter(community__in=Place.objects.all())

but in 1.11 this fails with

django.core.exceptions.FieldError: Cannot resolve keyword 'place_ptr' into field. Choices are: [...]

In both versions

Potential.objects.filter(community=Place.objects.first())

works fine.

It's not clear to me from the docs whether the 1.10 behavior was intended, though.

It appears that adding the lines

                elif getattr(self.lhs.field.target_field, 'primary_key', False):
                    target_field = 'pk'

to django/db/models/fields/related_lookups.py at line 92 fixes this problem.

Change History (1)

comment:1 by Daniel Keller, 7 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top