Răsfoiți Sursa

Avoided having an indexed TextField installed unless using postgres

An index on TextField results in a warning message when running tests
on MySQL or SQLite, and the test using the TextField was PostgreSQL
only in any case.
Anssi Kääriäinen 12 ani în urmă
părinte
comite
13a2b11425

+ 7 - 4
tests/regressiontests/indexes/models.py

@@ -1,3 +1,4 @@
+from django.db import connection
 from django.db import models
 
 
@@ -11,7 +12,9 @@ class Article(models.Model):
         ]
 
 
-class IndexedArticle(models.Model):
-    headline = models.CharField(max_length=100, db_index=True)
-    body = models.TextField(db_index=True)
-    slug = models.CharField(max_length=40, unique=True, db_index=True)
+# Indexing a TextField on Oracle or MySQL results in index creation error.
+if connection.vendor == 'postgresql':
+    class IndexedArticle(models.Model):
+        headline = models.CharField(max_length=100, db_index=True)
+        body = models.TextField(db_index=True)
+        slug = models.CharField(max_length=40, unique=True, db_index=True)

+ 2 - 1
tests/regressiontests/indexes/tests.py

@@ -3,7 +3,7 @@ from django.db import connections, DEFAULT_DB_ALIAS
 from django.test import TestCase
 from django.utils.unittest import skipUnless
 
-from .models import Article, IndexedArticle
+from .models import Article
 
 
 class IndexesTests(TestCase):
@@ -16,6 +16,7 @@ class IndexesTests(TestCase):
         "This is a postgresql-specific issue")
     def test_postgresql_text_indexes(self):
         """Test creation of PostgreSQL-specific text indexes (#12234)"""
+        from .models import IndexedArticle
         connection = connections[DEFAULT_DB_ALIAS]
         index_sql = connection.creation.sql_indexes_for_model(IndexedArticle, no_style())
         self.assertEqual(len(index_sql), 5)