Opened 10 years ago
Closed 10 years ago
#22876 closed Bug (duplicate)
Related lookups allow models of a different type
Reported by: | Ben Davis | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Django currently allows this:
>>> pig = Pig.objects.get(pk=1) >>> duck = Duck.objects.get(pk=1) >>> ducklings = Duckling.objects.filter(mother_duck=pig) [<Duckling: Duckling object>, <Duckling: Duckling object>]
Unfortunately this can lead to baby ducklings being adopted by pigs.
A commit was made last year that was intended to fix this ( changeset:7cca8d5 ), but the test doesn't seem to be written correctly. It should assert that the resulting queryset is empty, not populated with ob
:
-
tests/queries/tests.py
diff --git a/tests/queries/tests.py b/tests/queries/tests.py index 60d1083..cb615bb 100644
a b class RelatedLookupTypeTests(TestCase): 3247 3247 # be a good idea... 3248 3248 self.assertQuerysetEqual( 3249 3249 ObjectB.objects.filter(objecta=wrong_type), 3250 [ ob], lambda x: x)3250 [], lambda x: x) 3251 3251 self.assertQuerysetEqual( 3252 3252 ObjectB.objects.filter(objecta__in=[wrong_type]), 3253 [ ob], lambda x: x)3253 [], lambda x: x)
Change History (2)
comment:1 by , 10 years ago
comment:2 by , 10 years ago
Resolution: | → duplicate |
---|---|
Status: | new → closed |
Yep, the proposed patch there fixes the issue. Closing.
Note:
See TracTickets
for help on using tickets.
Duplicate of #14334, I think.