Cat*_*lus 317
它是RDBMS varchar(或类似)之间的区别- 通常以最大长度指定,并且在性能或存储方面可能更有效 - 和text(或类似)类型 - 这些通常仅受硬编码实现限制(不是数据库架构).
PostgreSQL 9特别指出"这三种类型之间没有性能差异",但AFAIK在MySQL等方面存在一些差异,因此需要牢记这一点.
一个好的经验法则是,CharField当您需要限制最大长度时使用,TextField否则.
这也不是特定于Django的.
ren*_*box 33
在某些情况下,它与场的使用方式有关.在某些数据库引擎中,字段差异决定了您在字段中搜索文本的方式(以及是否).CharFields通常用于可搜索的内容,例如,如果要在字符串"one plus two"中搜索"one".由于字符串较短,因此引擎搜索时间较短.TextFields通常不是要搜索(可能是博客的主体),而是意味着要容纳大量的文本.现在大部分都取决于数据库引擎和Postgres一样,没关系.
即使无关紧要,如果你使用ModelForms,你会在表单中获得不同类型的编辑字段.ModelForm将生成一个HTML表单,其大小为CharField的一行文本和TextField的多行.
例如,.在下面的模型中添加了2个字段.
description = models.TextField(blank=True, null=True)
title = models.CharField(max_length=64, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
下面是应用迁移时执行的mysql查询.
for TextField(description)该字段定义为alongtext
ALTER TABLE `sometable_sometable` ADD COLUMN `description` longtext NULL;
Run Code Online (Sandbox Code Playgroud)
TextField根据字符串类型概述,MySQL 的最大长度为4GB .
for CharField(title)max_length(required)定义为varchar(64)
ALTER TABLE `sometable_sometable` ADD COLUMN `title` varchar(64) NULL;
ALTER TABLE `sometable_sometable` ALTER COLUMN `title` DROP DEFAULT;
Run Code Online (Sandbox Code Playgroud)
CharField具有max_length个255字符,但TextField可以容纳多个255字符.使用TextField时,你有一个大的字符串作为输入.很高兴知道当max_length参数传递给TextField它时,它会将长度验证传递给TextArea小部件.
| 归档时间: |
|
| 查看次数: |
109254 次 |
| 最近记录: |