Loading django/db/models/sql/query.py +2 −1 Original line number Diff line number Diff line Loading @@ -556,6 +556,7 @@ class Query(object): # distinct joins for the same connection in rhs query, then the # combined query must have two joins, too. reuse.discard(new_alias) if alias != new_alias: change_map[alias] = new_alias if not rhs.alias_refcount[alias]: # The alias was unused in the rhs query. Unref it so that it Loading docs/releases/1.8.5.txt +2 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ Bugfixes * Fixed ``AssertionError`` in some delete queries with a model containing a field that is both a foreign and primary key (:ticket:`24951`). * Fixed ``AssertionError`` in some complex queries (:ticket:`24525`). * Fixed a migrations crash with ``GenericForeignKey`` (:ticket:`25040`). * Made ``translation.override()`` clear the overridden language when a Loading tests/queries/models.py +1 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ class Tag(models.Model): class Note(models.Model): note = models.CharField(max_length=100) misc = models.CharField(max_length=10) tag = models.ForeignKey(Tag, models.SET_NULL, blank=True, null=True) class Meta: ordering = ['note'] Loading tests/queries/tests.py +14 −3 Original line number Diff line number Diff line Loading @@ -1180,7 +1180,7 @@ class Queries1Tests(BaseQuerysetTest): msg = ( "Cannot resolve keyword 'unknown_field' into field. Choices are: " "annotation, category, category_id, children, id, item, " "managedmodel, name, parent, parent_id" "managedmodel, name, note, parent, parent_id" ) with self.assertRaisesMessage(FieldError, msg): Tag.objects.filter(unknown_field__name='generic') Loading Loading @@ -1326,8 +1326,8 @@ class Queries4Tests(BaseQuerysetTest): generic = NamedCategory.objects.create(name="Generic") cls.t1 = Tag.objects.create(name='t1', category=generic) n1 = Note.objects.create(note='n1', misc='foo', id=1) n2 = Note.objects.create(note='n2', misc='bar', id=2) n1 = Note.objects.create(note='n1', misc='foo') n2 = Note.objects.create(note='n2', misc='bar') e1 = ExtraInfo.objects.create(info='e1', note=n1) e2 = ExtraInfo.objects.create(info='e2', note=n2) Loading @@ -1342,6 +1342,17 @@ class Queries4Tests(BaseQuerysetTest): Item.objects.create(name='i1', created=datetime.datetime.now(), note=n1, creator=cls.a1) Item.objects.create(name='i2', created=datetime.datetime.now(), note=n1, creator=cls.a3) def test_ticket24525(self): tag = Tag.objects.create() anth100 = tag.note_set.create(note='ANTH', misc='100') math101 = tag.note_set.create(note='MATH', misc='101') s1 = tag.annotation_set.create(name='1') s2 = tag.annotation_set.create(name='2') s1.notes = [math101, anth100] s2.notes = [math101] result = math101.annotation_set.all() & tag.annotation_set.exclude(notes__in=[anth100]) self.assertEqual(list(result), [s2]) def test_ticket11811(self): unsaved_category = NamedCategory(name="Other") with six.assertRaisesRegex(self, ValueError, Loading Loading
django/db/models/sql/query.py +2 −1 Original line number Diff line number Diff line Loading @@ -556,6 +556,7 @@ class Query(object): # distinct joins for the same connection in rhs query, then the # combined query must have two joins, too. reuse.discard(new_alias) if alias != new_alias: change_map[alias] = new_alias if not rhs.alias_refcount[alias]: # The alias was unused in the rhs query. Unref it so that it Loading
docs/releases/1.8.5.txt +2 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ Bugfixes * Fixed ``AssertionError`` in some delete queries with a model containing a field that is both a foreign and primary key (:ticket:`24951`). * Fixed ``AssertionError`` in some complex queries (:ticket:`24525`). * Fixed a migrations crash with ``GenericForeignKey`` (:ticket:`25040`). * Made ``translation.override()`` clear the overridden language when a Loading
tests/queries/models.py +1 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ class Tag(models.Model): class Note(models.Model): note = models.CharField(max_length=100) misc = models.CharField(max_length=10) tag = models.ForeignKey(Tag, models.SET_NULL, blank=True, null=True) class Meta: ordering = ['note'] Loading
tests/queries/tests.py +14 −3 Original line number Diff line number Diff line Loading @@ -1180,7 +1180,7 @@ class Queries1Tests(BaseQuerysetTest): msg = ( "Cannot resolve keyword 'unknown_field' into field. Choices are: " "annotation, category, category_id, children, id, item, " "managedmodel, name, parent, parent_id" "managedmodel, name, note, parent, parent_id" ) with self.assertRaisesMessage(FieldError, msg): Tag.objects.filter(unknown_field__name='generic') Loading Loading @@ -1326,8 +1326,8 @@ class Queries4Tests(BaseQuerysetTest): generic = NamedCategory.objects.create(name="Generic") cls.t1 = Tag.objects.create(name='t1', category=generic) n1 = Note.objects.create(note='n1', misc='foo', id=1) n2 = Note.objects.create(note='n2', misc='bar', id=2) n1 = Note.objects.create(note='n1', misc='foo') n2 = Note.objects.create(note='n2', misc='bar') e1 = ExtraInfo.objects.create(info='e1', note=n1) e2 = ExtraInfo.objects.create(info='e2', note=n2) Loading @@ -1342,6 +1342,17 @@ class Queries4Tests(BaseQuerysetTest): Item.objects.create(name='i1', created=datetime.datetime.now(), note=n1, creator=cls.a1) Item.objects.create(name='i2', created=datetime.datetime.now(), note=n1, creator=cls.a3) def test_ticket24525(self): tag = Tag.objects.create() anth100 = tag.note_set.create(note='ANTH', misc='100') math101 = tag.note_set.create(note='MATH', misc='101') s1 = tag.annotation_set.create(name='1') s2 = tag.annotation_set.create(name='2') s1.notes = [math101, anth100] s2.notes = [math101] result = math101.annotation_set.all() & tag.annotation_set.exclude(notes__in=[anth100]) self.assertEqual(list(result), [s2]) def test_ticket11811(self): unsaved_category = NamedCategory(name="Other") with six.assertRaisesRegex(self, ValueError, Loading