在Django中,如何为使用MySql后端的TextField指定索引?

16 浏览
0 Comments

在Django中,如何为使用MySql后端的TextField指定索引?

我在Django中定义了一个模型,部分代码如下:\n

class Info(models.Model):
    information = models.TextField(max_length = 32, null = True, db_index = True)

\n然而,当我尝试使用MySql后端进行syncdb时,我遇到了Failed to install index for app.Info model: (1170, \"BLOB/TEXT column \'information\' used in key specification without a key length\")的错误。\n我该如何解决这个问题?

0
0 Comments

问题出现的原因是想在Django的MySql后端中为TextField指定一个索引,但是默认情况下TextField是不支持索引的。解决方法是将字段指定为CharField,并设置max_length参数为32,并且设置db_index参数为True。这样就可以在数据库中为该字段创建一个索引。代码如下:

class Info(models.Model):
    information = models.CharField(max_length=32, null=True, db_index=True)

在这种情况下,CharField是足够的,因为max_length设置为32,但有时候需要创建一个没有长度限制的文本字段(TEXT在mysql中),但是在索引中限制字符数量的情况下。

0