mirror of
https://github.com/django/django.git
synced 2024-12-23 01:25:58 +00:00
Fixed #28038 -- Restored casting to text of builtin lookups on PostgreSQL.
Reverted 658f1e8
which broke code using __icontains's implicit cast to ::text
on ArrayField.
Thanks Peter J. Farrell for the report.
This commit is contained in:
parent
67b2b1f116
commit
a354c69055
@ -74,8 +74,6 @@ class DatabaseOperations(BaseDatabaseOperations):
|
|||||||
'istartswith', 'endswith', 'iendswith', 'regex', 'iregex'):
|
'istartswith', 'endswith', 'iendswith', 'regex', 'iregex'):
|
||||||
if internal_type in ('IPAddressField', 'GenericIPAddressField'):
|
if internal_type in ('IPAddressField', 'GenericIPAddressField'):
|
||||||
lookup = "HOST(%s)"
|
lookup = "HOST(%s)"
|
||||||
elif internal_type in ('CharField', 'TextField'):
|
|
||||||
lookup = '%s'
|
|
||||||
else:
|
else:
|
||||||
lookup = "%s::text"
|
lookup = "%s::text"
|
||||||
|
|
||||||
|
@ -12,3 +12,6 @@ Bugfixes
|
|||||||
* Made migrations respect ``Index``’s ``name`` argument. If you created a
|
* Made migrations respect ``Index``’s ``name`` argument. If you created a
|
||||||
named index with Django 1.11, ``makemigrations`` will create a migration to
|
named index with Django 1.11, ``makemigrations`` will create a migration to
|
||||||
recreate the index with the correct name (:ticket:`28051`).
|
recreate the index with the correct name (:ticket:`28051`).
|
||||||
|
|
||||||
|
* Fixed a crash when using a ``__icontains`` lookup on a ``ArrayField``
|
||||||
|
(:ticket:`28038`).
|
||||||
|
@ -216,6 +216,14 @@ class TestQuerying(PostgreSQLTestCase):
|
|||||||
self.objs[1:3]
|
self.objs[1:3]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_icontains(self):
|
||||||
|
# Using the __icontains lookup with ArrayField is inefficient.
|
||||||
|
instance = CharArrayModel.objects.create(field=['FoO'])
|
||||||
|
self.assertSequenceEqual(
|
||||||
|
CharArrayModel.objects.filter(field__icontains='foo'),
|
||||||
|
[instance]
|
||||||
|
)
|
||||||
|
|
||||||
def test_contains_charfield(self):
|
def test_contains_charfield(self):
|
||||||
# Regression for #22907
|
# Regression for #22907
|
||||||
self.assertSequenceEqual(
|
self.assertSequenceEqual(
|
||||||
|
Loading…
Reference in New Issue
Block a user