赞
踩
from django.db import models
class User(models.Model):
username = models.CharField(max_length=4)
email = models.EmailField(unique=True)
# 其他字段...
def __str__(self):
return self.username
在上面的数据库模型代码中我对字段username
限制为4个长度,我们进行如下测试
①4个中文汉字能不能正常写入;
②5个中文汉字能不能正常写入;
③4个英文字符能不能正常写入;
④5个英文字符能不能正常写入;
相关命令如下:
CD E:\Python_project\P_001\myshop-test\myshop\
E:
manage.py makemigrations
manage.py migrate
import os import django # 设置Dango运行时需要的环境变量DJANGO_SETTINGS_MODULE os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myshop.settings') # 加载Django的设置 django.setup() # 导入模型,注意必须在加载完Django的设置后下面的这句导入模型语句才能被正确执行 from app1.models import User # # 清空User数据表 # User.objects.all().delete() # # print('Successfully written data to the database.') # 创建一个用户 user = User(username='欧阳娃娃', email='john@example.com') user.save()
运行上面的代码后,查看数据表是否写入成功:
可见是写入成功了,也就是说四个中文汉字在max_length=4时是可以写入成功的。
运行下面的代码测试五个中文汉字的情况:
user = User(username='你是我的儿', email='a002@example.com')
user.save()
此时运行报错,原因是字符串超过规定超过长度了:
运行下面的代码测试四个英文字符的情况:
user = User(username='abcd', email='b001@example.com')
user.save()
可见能成功写入
运行下面的代码测试五个英文字符的情况:
user = User(username='abcde', email='b002@example.com')
user.save()
此时报错:
Django数据库模型中的参数max_length的单位是字符个数,而不是字节数。
如果你的max_length
为100,而且你的字符编码是UTF-8,那么这个字段可以存储包含100个字符的字符串,不管这些字符是英文、汉字还是其他字符。UTF-8 编码下,汉字通常占用3个字节,英文占用1个字节。因此,max_length=100
的情况下,如果是100个英文字符,就占用100个字节的存储空间,而如果是100个中文字符,就占用300个字节的存储空间。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。