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'的最大尺寸是多少?的主要内容,如果未能解决你的问题,请参考以下文章