@@ -41,9 +41,10 @@ class Meta:
41
41
def test_vector_search_requires_atlas_search_support (self ):
42
42
class Article (models .Model ):
43
43
title = models .CharField (max_length = 10 )
44
+ vector_float = ArrayField (models .FloatField (), size = 10 )
44
45
45
46
class Meta :
46
- indexes = [VectorSearchIndex (fields = ["title" ])]
47
+ indexes = [VectorSearchIndex (fields = ["title" , "vector_float" ])]
47
48
48
49
errors = checks .run_checks (app_configs = self .apps .get_app_configs (), databases = {"default" })
49
50
self .assertEqual (
@@ -108,9 +109,10 @@ class Meta:
108
109
def test_unsupported_type (self ):
109
110
class Article (models .Model ):
110
111
data = models .JSONField ()
112
+ vector_float = ArrayField (models .FloatField (), size = 10 )
111
113
112
114
class Meta :
113
- indexes = [VectorSearchIndex (fields = ["data" ])]
115
+ indexes = [VectorSearchIndex (fields = ["data" , "vector_float" ])]
114
116
115
117
errors = checks .run_checks (app_configs = self .apps .get_app_configs (), databases = {"default" })
116
118
self .assertEqual (
@@ -219,3 +221,24 @@ class Meta:
219
221
220
222
errors = checks .run_checks (app_configs = self .apps .get_app_configs (), databases = {"default" })
221
223
self .assertEqual (errors , [])
224
+
225
+ def test_requires_vector_field (self ):
226
+ class NoSearchVectorModel (models .Model ):
227
+ text = models .CharField (max_length = 100 )
228
+
229
+ class Meta :
230
+ indexes = [VectorSearchIndex (name = "recent_test_idx" , fields = ["text" ])]
231
+
232
+ errors = checks .run_checks (app_configs = self .apps .get_app_configs (), databases = {"default" })
233
+ self .assertEqual (
234
+ errors ,
235
+ [
236
+ checks .Error (
237
+ "VectorSearchIndex requires at least one field containing vector data "
238
+ "(e.g., an ArrayField(FloatField, size=10)). If you're aiming to perform "
239
+ "search operations on other data types, consider using SearchIndex instead." ,
240
+ id = "django_mongodb_backend.indexes.VectorSearchIndex.E006" ,
241
+ obj = NoSearchVectorModel ,
242
+ ),
243
+ ],
244
+ )
0 commit comments