@@ -30,7 +30,6 @@ class ArrayField(CheckFieldDefaultMixin, Field):
30
30
31
31
def __init__ (self , base_field , size = None , ** kwargs ):
32
32
self .base_field = base_field
33
- self .db_collation = getattr (self .base_field , "db_collation" , None )
34
33
self .size = size
35
34
if self .size :
36
35
self .default_validators = [
@@ -72,7 +71,6 @@ def check(self, **kwargs):
72
71
)
73
72
)
74
73
else :
75
- # Remove the field name checks as they are not needed here.
76
74
base_checks = self .base_field .check ()
77
75
if base_checks :
78
76
error_messages = "\n " .join (
@@ -114,14 +112,6 @@ def description(self):
114
112
def db_type (self , connection ):
115
113
return "array"
116
114
117
- def db_parameters (self , connection ):
118
- db_params = super ().db_parameters (connection )
119
- db_params ["collation" ] = self .db_collation
120
- return db_params
121
-
122
- def get_placeholder (self , value , compiler , connection ):
123
- return f"%s::{ self .db_type (connection )} "
124
-
125
115
def get_db_prep_value (self , value , connection , prepared = False ):
126
116
if isinstance (value , list | tuple ):
127
117
# Workaround for https://code.djangoproject.com/ticket/35982
@@ -144,7 +134,7 @@ def deconstruct(self):
144
134
145
135
def to_python (self , value ):
146
136
if isinstance (value , str ):
147
- # Assume we're deserializing
137
+ # Assume value is being deserialized,
148
138
vals = json .loads (value )
149
139
value = [self .base_field .to_python (val ) for val in vals ]
150
140
return value
@@ -236,9 +226,7 @@ def as_mql(self, compiler, connection):
236
226
237
227
class ArrayRHSMixin :
238
228
def __init__ (self , lhs , rhs ):
239
- # Don't wrap arrays that contains only None values, psycopg doesn't
240
- # allow this.
241
- if isinstance (rhs , tuple | list ) and any (self ._rhs_not_none_values (rhs )):
229
+ if isinstance (rhs , tuple | list ):
242
230
expressions = []
243
231
for value in rhs :
244
232
if not hasattr (value , "resolve_expression" ):
@@ -248,13 +236,6 @@ def __init__(self, lhs, rhs):
248
236
rhs = Array (* expressions )
249
237
super ().__init__ (lhs , rhs )
250
238
251
- def _rhs_not_none_values (self , rhs ):
252
- for x in rhs :
253
- if isinstance (x , list | tuple ):
254
- yield from self ._rhs_not_none_values (x )
255
- elif x is not None :
256
- yield True
257
-
258
239
259
240
@ArrayField .register_lookup
260
241
class ArrayContains (ArrayRHSMixin , FieldGetDbPrepValueMixin , Lookup ):
@@ -298,8 +279,7 @@ def get_prep_lookup(self):
298
279
values = super ().get_prep_lookup ()
299
280
if hasattr (values , "resolve_expression" ):
300
281
return values
301
- # In.process_rhs() expects values to be hashable, so convert lists
302
- # to tuples.
282
+ # process_rhs() expects hashable values, so convert lists to tuples.
303
283
prepared_values = []
304
284
for value in values :
305
285
if hasattr (value , "resolve_expression" ):
0 commit comments