mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Fixed #35603 -- Prevented F.__contains__() from hanging.
Regression in 94b6f101f7
.
This commit is contained in:
parent
182f262b15
commit
6b3f55446f
@ -884,6 +884,11 @@ class F(Combinable):
|
||||
def __getitem__(self, subscript):
|
||||
return Sliced(self, subscript)
|
||||
|
||||
def __contains__(self, other):
|
||||
# Disable old-style iteration protocol inherited from implementing
|
||||
# __getitem__() to prevent this method from hanging.
|
||||
raise TypeError(f"argument of type '{self.__class__.__name__}' is not iterable")
|
||||
|
||||
def resolve_expression(
|
||||
self, query=None, allow_joins=True, reuse=None, summarize=False, for_save=False
|
||||
):
|
||||
|
@ -1302,6 +1302,11 @@ class FTests(SimpleTestCase):
|
||||
self.assertNotEqual(f, value)
|
||||
self.assertNotEqual(value, f)
|
||||
|
||||
def test_contains(self):
|
||||
msg = "argument of type 'F' is not iterable"
|
||||
with self.assertRaisesMessage(TypeError, msg):
|
||||
"" in F("name")
|
||||
|
||||
|
||||
class ExpressionsTests(TestCase):
|
||||
def test_F_reuse(self):
|
||||
|
Loading…
Reference in New Issue
Block a user