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

Chr*_* B. 3 mysql django django-models

我有一个在Django中定义的模型,看起来(部分)是这样的:

class Info(models.Model):
    information = models.TextField(max_length = 32, null = True, db_index = True)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试syncdb使用MySql后端时,我得到了Failed to install index for app.Info model: (1170, "BLOB/TEXT column 'information' used in key specification without a key length")

我怎样才能解决这个问题?

Chr*_* B. 6

答案是将字段指定为a CharField,而不是a TextField.

class Info(models.Model):
    information = models.CharField(max_length = 32, null = True, db_index = True)
Run Code Online (Sandbox Code Playgroud)

  • 对于max_length = 32,CharField就足够了,但有时需要创建没有长度限制的文本字段(mysql中的TEXT),但仅限索引的字符数限制. (4认同)