我有一些文本列恰好包含 2 个字符。当我使用models.CharField
with时max_length=2
,它仍然创建一个 Varchar。我检查了https://docs.djangoproject.com/en/5.0/ref/models/fields/并且找不到要传递以获取 Char(x) 列而不是 Varchar(x) 的字段类型或参数。TextField
太不适合这个了。据我了解,Varchar 使用 2 个额外字节来存储长度信息,这在这里很浪费。那么如何让 Django 创建一个固定字符长度的列呢?
编辑:经过这个(具有固定长度的 CharField,如何?),似乎没有办法强制 Django 创建一个 Char,它总是会创建一个 Varchar 并且最小-最大长度验证器可以放在上面。
Django 确实会始终使用
VARCHAR
,因此除非您编写自己的自定义后端,否则它将始终有一个VARCHAR(2)
. 但是,您可以添加[Django-doc],并添加[Django-doc]以在数据库上强制执行此操作:MinLengthValidator
CheckConstraint