Django中'max_length'的最大尺寸是多少?

Posted

技术标签:

【中文标题】Django中\'max_length\'的最大尺寸是多少?【英文标题】:What is the max size of 'max_length' in Django?Django中'max_length'的最大尺寸是多少? 【发布时间】:2011-02-05 13:53:44 【问题描述】:

这是我的模型:

class Position(models.Model):
    map = models.ForeignKey(Map,primary_key=True)
    #members=models.CharField(max_length=200)
    LatLng = models.CharField(max_length=40000)
    infowindow = models.CharField(max_length=40000)

但它无法运行。 max_length 参数的最大大小是多少?

【问题讨论】:

【参考方案1】:

改用TextField

infowindow = models.TextField()

【讨论】:

请注意 TextField 不会在数据库级别验证 max_length【参考方案2】:

这实际上取决于您用于模型的数据库。 PostgreSQL、mysql 等有不同的设置和限制。

如果您确实需要一个长字符串或不确定变量的长度,请始终使用variable=models.TextField()

【讨论】:

【参考方案3】:

这取决于后端数据库。如果您使用 MySQL 5.6,则限制为 65,535。如果您在上面使用,那么它也将允许 1024,但不会超出此范围。

class Demo(models.Model):
    max_test = models.CharField(max_length=1024)

我在 MySQL 5.7 上运行

【讨论】:

这是否可行取决于已接受的答案中已经提到的所使用的数据库后端。虽然这可行,但更好的解决方案是使用 TextField。【参考方案4】:

这取决于数据库后端。 Django DB Docs 会告诉您,max_length=255 保证始终有效。

如果您需要问题中指定的金额,我建议您使用TextField。

【讨论】:

在这种情况下,再加上我使用的 DB 也将唯一选项限制为 255,我个人坚持认为,如果我需要一个大于 255 的 CharField,我将其设为 TextField。 TextField 的最大大小也取决于数据库。对于 MySQL,它大约是 4 万亿。 在 MySQL 中 Charfield 是一个 varchar,最大 65,535(但这也是最大行大小),请参阅 ***.com/questions/13506832/…。使用大的最大大小没有任何惩罚,MySQL 将使用它实际需要的大小。请注意,Textfields 的处理方式不同,会影响性能,因此最好使用另一个表中的其他字段进行索引(每个 DB 页的索引行越多越好),找到您需要的内容,然后使用现在已知的键获取 Textfield。 虽然 TextField 对于 >255 个字符串是一个不错的选择,但它不会在模型(或数据库)级别强制执行 max_length。这可能会使某些验证逻辑复杂化,这与 CharField 不同,它允许您指定 Django 强制执行的 max_length 链接的段落说:“使用 VARCHAR 列类型存储的任何字段的 max_length 限制为 255 个字符,如果您对字段使用 unique=True。这会影响 CharField、SlugField。”跨度>

以上是关于Django中'max_length'的最大尺寸是多少?的主要内容,如果未能解决你的问题,请参考以下文章

django-auth组件的注册登录

python django查询mysql表字段的最大值

没有最大长度的 Django CharField

在 Django rest api 中查询最小和最大大小

Django模型错误超出最大递归深度

来自 ManyToManyField 的 Django 最大相似度(TrigramSimilarity)