What is the max size of 'max_length' in Django?
这是我的模特:
1 2 3 4 5
| 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参数的最大大小是多少?
这取决于数据库后端。 Django DB Docs会告诉您,max_length=255始终可以正常工作。
如果您需要在问题中指定的金额,我建议您使用TextField。
-
在这种情况下再加上这样一个事实:对于DB我使用它也将唯一选项限制为255,我个人坚持认为,如果我需要一个大于255的CharField,我将它变为TextField。
-
什么是TextField的最大尺寸???
-
TextField的最大大小也取决于数据库。对于MySQL来说,它大约有4万亿。
-
在MySQL中,Charfield是一个varchar,最大值为65,535(但这也是最大行大小),请参阅stackoverflow.com/questions/13506832/…。使用大的最大大小没有任何惩罚,MySQL将使用它实际需要的东西。请注意,Textfields的处理方式不同,具有性能影响,因此最好使用另一个表中的其他字段进行索引(每个DB页面的索引行数越多越好),找到所需内容,然后使用现在已知的密钥获取Textfield。
-
虽然TextField是> 255个字符串的正常选择,但它不会在模型(或数据库)级别强制执行max_length。这可能会使一些验证逻辑复杂化,这与CharField的情况不同,它允许您指定Django强制执行的max_length。
-
链接的段落说:"如果对字段使用unique = True,那么使用VARCHAR列类型存储的任何字段的max_length都限制为255个字符。这会影响CharField,SlugField。"
-
@AviahLaor如本回答所述,使用TextField并不总是会对性能产生负面影响。至少在Postgres中它使用与CharField相同的底层类型。
请改用TextField
1
| infowindow = models.TextField() |
-
请注意TextField不在数据库级别验证max_length。
这取决于后端数据库。 如果你使用MySQL 5.6那么没有65,535的限制。 如果你使用上面那个,那么它也允许1024但不超过它。
1 2
| class Demo(models.Model):
max_test = models.CharField(max_length=1024) |
我在MySQL 5.7上面运行了
-
如果这将起作用取决于已接受的答案中已经提到的数据库后端。虽然这可行,但更好的解决方案是使用TextField。