【问题标题】:Is there a need to set max_length in a model field?是否需要在模型字段中设置 max_length?
【发布时间】:2014-12-15 23:42:08
【问题描述】:

我正在开发一个 Django 应用程序,我想知道是否有任何理由为模型字段(特别是 TextField,但我对所有字段都感兴趣)显式设置 max_length

它是减小表格大小,还是提高效率?较小的 max_length 是否比较大的有优势?

【问题讨论】:

    标签: python django database database-design django-models


    【解决方案1】:

    你需要在 CharField 中设置它,因为它默认为 None,我相信。但是在某些情况下,例如电话号码、ssn 或美国州的缩写,它会指导用户输入正确长度的字符。根据文档:https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.TextField

    class TextField([**options]) 一个大的文本字段。此字段的默认表单小部件是 Textarea。

    在 Django 1.7 中更改: 如果您指定 max_length 属性,它将反映在自动生成的表单字段的 Textarea 小部件中。但是,它不是在模型或数据库级别强制执行的。为此使用 CharField。

    【讨论】:

    • 谢谢,所以如果我理解正确,除了验证之外没关系吗?为 CharField 选择较小的 max_lenth 是否比选择较大的有任何优势?
    • 好吧,我想这取决于数据库如何为 varchar 声明空间。我不确定这在很多情况下是否重要。
    • @Parker,如果您超出某些限制,这很重要。在 MySQL 中,旧版本的 VARCHAR 限制为 255,而新版本的限制为 65,535。此外,行的总大小为 65,535 字节,VARCHAR 中的内容受此限制,但 TEXT 的内容不受此限制。检查数据库的规格。
    猜你喜欢
    • 2011-06-26
    • 2018-04-18
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    相关资源
    最近更新 更多