Opened 8 years ago
Last modified 8 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 )
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.
Note:
See TracTickets
for help on using tickets.