mirror of
https://github.com/django/django.git
synced 2025-10-23 21:59:11 +00:00
Fixed #11319 - Added lookup support for ForeignKey.to_field. Also reverted no-longer-needed model formsets workaround for lack of such support from r10756. Thanks Russell and Alex for review.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15303 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -14,7 +14,7 @@ from django.utils.datastructures import SortedDict
|
||||
from models import (Annotation, Article, Author, Celebrity, Child, Cover, Detail,
|
||||
DumbCategory, ExtraInfo, Fan, Item, LeafA, LoopX, LoopZ, ManagedModel,
|
||||
Member, NamedCategory, Note, Number, Plaything, PointerA, Ranking, Related,
|
||||
Report, ReservedName, Tag, TvChef, Valid, X)
|
||||
Report, ReservedName, Tag, TvChef, Valid, X, Food, Eaten, Node)
|
||||
|
||||
|
||||
class BaseQuerysetTest(TestCase):
|
||||
@@ -1515,6 +1515,67 @@ class EscapingTests(TestCase):
|
||||
)
|
||||
|
||||
|
||||
class ToFieldTests(TestCase):
|
||||
def test_in_query(self):
|
||||
apple = Food.objects.create(name="apple")
|
||||
pear = Food.objects.create(name="pear")
|
||||
lunch = Eaten.objects.create(food=apple, meal="lunch")
|
||||
dinner = Eaten.objects.create(food=pear, meal="dinner")
|
||||
|
||||
self.assertEqual(
|
||||
set(Eaten.objects.filter(food__in=[apple, pear])),
|
||||
set([lunch, dinner]),
|
||||
)
|
||||
|
||||
def test_reverse_in(self):
|
||||
apple = Food.objects.create(name="apple")
|
||||
pear = Food.objects.create(name="pear")
|
||||
lunch_apple = Eaten.objects.create(food=apple, meal="lunch")
|
||||
lunch_pear = Eaten.objects.create(food=pear, meal="dinner")
|
||||
|
||||
self.assertEqual(
|
||||
set(Food.objects.filter(eaten__in=[lunch_apple, lunch_pear])),
|
||||
set([apple, pear])
|
||||
)
|
||||
|
||||
def test_single_object(self):
|
||||
apple = Food.objects.create(name="apple")
|
||||
lunch = Eaten.objects.create(food=apple, meal="lunch")
|
||||
dinner = Eaten.objects.create(food=apple, meal="dinner")
|
||||
|
||||
self.assertEqual(
|
||||
set(Eaten.objects.filter(food=apple)),
|
||||
set([lunch, dinner])
|
||||
)
|
||||
|
||||
def test_single_object_reverse(self):
|
||||
apple = Food.objects.create(name="apple")
|
||||
lunch = Eaten.objects.create(food=apple, meal="lunch")
|
||||
|
||||
self.assertEqual(
|
||||
set(Food.objects.filter(eaten=lunch)),
|
||||
set([apple])
|
||||
)
|
||||
|
||||
def test_recursive_fk(self):
|
||||
node1 = Node.objects.create(num=42)
|
||||
node2 = Node.objects.create(num=1, parent=node1)
|
||||
|
||||
self.assertEqual(
|
||||
list(Node.objects.filter(parent=node1)),
|
||||
[node2]
|
||||
)
|
||||
|
||||
def test_recursive_fk_reverse(self):
|
||||
node1 = Node.objects.create(num=42)
|
||||
node2 = Node.objects.create(num=1, parent=node1)
|
||||
|
||||
self.assertEqual(
|
||||
list(Node.objects.filter(node=node2)),
|
||||
[node1]
|
||||
)
|
||||
|
||||
|
||||
class ConditionalTests(BaseQuerysetTest):
|
||||
"""Tests whose execution depend on dfferent environment conditions like
|
||||
Python version or DB backend features"""
|
||||
|
||||
Reference in New Issue
Block a user