|
@@ -21,16 +21,16 @@ from .models import (
|
|
|
FK1, X, Annotation, Article, Author, BaseA, Book, CategoryItem,
|
|
|
CategoryRelationship, Celebrity, Channel, Chapter, Child, ChildObjectA,
|
|
|
Classroom, Company, Cover, CustomPk, CustomPkTag, Detail, DumbCategory,
|
|
|
- Eaten, Employment, ExtraInfo, Fan, Food, Identifier, Item, Job,
|
|
|
+ Eaten, Employment, ExtraInfo, Fan, Food, Identifier, Individual, Item, Job,
|
|
|
JobResponsibilities, Join, LeafA, LeafB, LoopX, LoopZ, ManagedModel,
|
|
|
Member, ModelA, ModelB, ModelC, ModelD, MyObject, NamedCategory, Node,
|
|
|
Note, NullableName, Number, ObjectA, ObjectB, ObjectC, OneToOneCategory,
|
|
|
Order, OrderItem, Page, Paragraph, Person, Plaything, PointerA, Program,
|
|
|
- ProxyCategory, ProxyObjectA, ProxyObjectB, Ranking, Related, RelatedObject,
|
|
|
- Report, ReservedName, Responsibility, School, SharedConnection,
|
|
|
- SimpleCategory, SingleObject, SpecialCategory, Staff, StaffUser, Student,
|
|
|
- Tag, Task, Ticket21203Child, Ticket21203Parent, Ticket23605A, Ticket23605B,
|
|
|
- Ticket23605C, TvChef, Valid,
|
|
|
+ ProxyCategory, ProxyObjectA, ProxyObjectB, Ranking, Related,
|
|
|
+ RelatedIndividual, RelatedObject, Report, ReservedName, Responsibility,
|
|
|
+ School, SharedConnection, SimpleCategory, SingleObject, SpecialCategory,
|
|
|
+ Staff, StaffUser, Student, Tag, Task, Ticket21203Child, Ticket21203Parent,
|
|
|
+ Ticket23605A, Ticket23605B, Ticket23605C, TvChef, Valid,
|
|
|
)
|
|
|
|
|
|
|
|
@@ -3690,3 +3690,27 @@ class TestInvalidValuesRelation(TestCase):
|
|
|
Annotation.objects.filter(tag='abc')
|
|
|
with self.assertRaises(ValueError):
|
|
|
Annotation.objects.filter(tag__in=[123, 'abc'])
|
|
|
+
|
|
|
+
|
|
|
+class TestTicket24605(TestCase):
|
|
|
+ def test_ticket_24605(self):
|
|
|
+ """
|
|
|
+ Subquery table names should be quoted.
|
|
|
+ """
|
|
|
+ i1 = Individual.objects.create(alive=True)
|
|
|
+ RelatedIndividual.objects.create(related=i1)
|
|
|
+ i2 = Individual.objects.create(alive=False)
|
|
|
+ RelatedIndividual.objects.create(related=i2)
|
|
|
+ i3 = Individual.objects.create(alive=True)
|
|
|
+ i4 = Individual.objects.create(alive=False)
|
|
|
+
|
|
|
+ self.assertQuerysetEqual(
|
|
|
+ Individual.objects.filter(Q(alive=False), Q(related_individual__isnull=True)),
|
|
|
+ [i4], lambda x: x
|
|
|
+ )
|
|
|
+ self.assertQuerysetEqual(
|
|
|
+ Individual.objects.exclude(
|
|
|
+ Q(alive=False), Q(related_individual__isnull=True)
|
|
|
+ ).order_by('pk'),
|
|
|
+ [i1, i2, i3], lambda x: x
|
|
|
+ )
|