@@ -80,7 +80,6 @@ def create_mongodb_index(
80
80
model ,
81
81
schema_editor ,
82
82
* ,
83
- connection = None , # noqa: ARG001
84
83
field = None ,
85
84
unique = False ,
86
85
column_prefix = "" ,
@@ -126,17 +125,49 @@ def create_mongodb_index(
126
125
127
126
class SearchIndex (Index ):
128
127
suffix = "search"
128
+ # Maps Django internal type to atlas search index type.
129
+ mongo_data_types = {
130
+ "AutoField" : "number" ,
131
+ "BigAutoField" : "number" ,
132
+ "BinaryField" : "string" ,
133
+ "BooleanField" : "boolean" ,
134
+ "CharField" : "string" ,
135
+ "DateField" : "date" ,
136
+ "DateTimeField" : "date" ,
137
+ "DecimalField" : "number" ,
138
+ "DurationField" : "number" ,
139
+ "FileField" : "string" ,
140
+ "FilePathField" : "string" ,
141
+ "FloatField" : "double" ,
142
+ "IntegerField" : "number" ,
143
+ "BigIntegerField" : "number" ,
144
+ "GenericIPAddressField" : "string" ,
145
+ "JSONField" : "document" ,
146
+ "OneToOneField" : "number" ,
147
+ "PositiveBigIntegerField" : "number" ,
148
+ "PositiveIntegerField" : "number" ,
149
+ "PositiveSmallIntegerField" : "number" ,
150
+ "SlugField" : "string" ,
151
+ "SmallAutoField" : "number" ,
152
+ "SmallIntegerField" : "number" ,
153
+ "TextField" : "string" ,
154
+ "TimeField" : "date" ,
155
+ "UUIDField" : "uuid" ,
156
+ "ObjectIdAutoField" : "objectId" ,
157
+ "ObjectIdField" : "objectId" ,
158
+ "EmbeddedModelField" : "embeddedDocuments" ,
159
+ }
129
160
130
161
def __init__ (self , * expressions , ** kwargs ):
131
162
super ().__init__ (* expressions , ** kwargs )
132
163
133
164
def create_mongodb_index (
134
- self , model , schema_editor , connection = None , field = None , unique = False , column_prefix = ""
165
+ self , model , schema_editor , field = None , unique = False , column_prefix = ""
135
166
):
136
167
fields = {}
137
168
for field_name , _ in self .fields_orders :
138
169
field_ = model ._meta .get_field (field_name )
139
- type_ = connection .mongo_data_types [field_ .get_internal_type ()]
170
+ type_ = self .mongo_data_types [field_ .get_internal_type ()]
140
171
field_path = column_prefix + model ._meta .get_field (field_name ).column
141
172
fields [field_path ] = {"type" : type_ }
142
173
return SearchIndexModel (
@@ -166,7 +197,7 @@ def _check_similarity_functions(self, similarities):
166
197
)
167
198
168
199
def create_mongodb_index (
169
- self , model , schema_editor , connection = None , field = None , unique = False , column_prefix = ""
200
+ self , model , schema_editor , field = None , unique = False , column_prefix = ""
170
201
):
171
202
similarities = (
172
203
itertools .cycle ([self .similarities ])
0 commit comments