@@ -120,7 +120,6 @@ def create_mongodb_index(
120
120
model ,
121
121
schema_editor ,
122
122
* ,
123
- connection = None , # noqa: ARG001
124
123
field = None ,
125
124
unique = False ,
126
125
column_prefix = "" ,
@@ -165,17 +164,49 @@ def create_mongodb_index(
165
164
166
165
class SearchIndex (Index ):
167
166
suffix = "search"
167
+ # Maps Django internal type to atlas search index type.
168
+ mongo_data_types = {
169
+ "AutoField" : "number" ,
170
+ "BigAutoField" : "number" ,
171
+ "BinaryField" : "string" ,
172
+ "BooleanField" : "boolean" ,
173
+ "CharField" : "string" ,
174
+ "DateField" : "date" ,
175
+ "DateTimeField" : "date" ,
176
+ "DecimalField" : "number" ,
177
+ "DurationField" : "number" ,
178
+ "FileField" : "string" ,
179
+ "FilePathField" : "string" ,
180
+ "FloatField" : "double" ,
181
+ "IntegerField" : "number" ,
182
+ "BigIntegerField" : "number" ,
183
+ "GenericIPAddressField" : "string" ,
184
+ "JSONField" : "document" ,
185
+ "OneToOneField" : "number" ,
186
+ "PositiveBigIntegerField" : "number" ,
187
+ "PositiveIntegerField" : "number" ,
188
+ "PositiveSmallIntegerField" : "number" ,
189
+ "SlugField" : "string" ,
190
+ "SmallAutoField" : "number" ,
191
+ "SmallIntegerField" : "number" ,
192
+ "TextField" : "string" ,
193
+ "TimeField" : "date" ,
194
+ "UUIDField" : "uuid" ,
195
+ "ObjectIdAutoField" : "objectId" ,
196
+ "ObjectIdField" : "objectId" ,
197
+ "EmbeddedModelField" : "embeddedDocuments" ,
198
+ }
168
199
169
200
def __init__ (self , * expressions , ** kwargs ):
170
201
super ().__init__ (* expressions , ** kwargs )
171
202
172
203
def create_mongodb_index (
173
- self , model , schema_editor , connection = None , field = None , unique = False , column_prefix = ""
204
+ self , model , schema_editor , field = None , unique = False , column_prefix = ""
174
205
):
175
206
fields = {}
176
207
for field_name , _ in self .fields_orders :
177
208
field_ = model ._meta .get_field (field_name )
178
- type_ = connection .mongo_data_types [field_ .get_internal_type ()]
209
+ type_ = self .mongo_data_types [field_ .get_internal_type ()]
179
210
field_path = column_prefix + model ._meta .get_field (field_name ).column
180
211
fields [field_path ] = {"type" : type_ }
181
212
return SearchIndexModel (
@@ -205,7 +236,7 @@ def _check_similarity_functions(self, similarities):
205
236
)
206
237
207
238
def create_mongodb_index (
208
- self , model , schema_editor , connection = None , field = None , unique = False , column_prefix = ""
239
+ self , model , schema_editor , field = None , unique = False , column_prefix = ""
209
240
):
210
241
similarities = (
211
242
itertools .cycle ([self .similarities ])
0 commit comments