[TOC=1,5] >[success] # model 字段 **对照** ~~~ from django.db import models # Create your models here. class Business(models.Model): caption = models.CharField(max_length=32) ~~~ >[success] # 常用字段 >[info] ## 自增列设置 >[danger] ##### AutoField ~~~ 1.一个根据实际ID自动增长的IntegerField 2.用法nid = models.AutoField(primary_key=True) ~~~ >[danger] ##### BigAutoField ~~~ 1.一个64位整数,非常像[AutoField]除了它保证适合1到9223372036854775807之间的数字 ~~~ >[info] ## 数字设置 >[danger] ##### IntegerField整数 ~~~ 1.一个整数。 在Django所支持的所有数据库中, 2.从 -2147483648 到 2147483647 范围内的值是合法的 ~~~ * * * * * </br> >[danger] ##### BigIntegerField ~~~ 1.一个64位整数,非常像[IntegerField] 2.除了它保证适-9223372036854775808到9223372036854775807之间的数字 ~~~ * * * * * </br> >[danger] ##### SmallIntegerField-32768 至 3276 ~~~ 1.该字段值在 -32768 至 32767这个范围内对所有可支持的数据库都是安全的。 ~~~ * * * * * </br> >[danger] ##### PositiveIntegerField 0-2147483647整数 ~~~ 1.类似 [IntegerField]( 但值必须是正数或者零(0). 2.从0到2147483647的值在Django支持的所有数据库中都是安全的。 由于向后兼容性原因,接受值0。 ~~~ * * * * * </br> >[danger] ##### PositiveSmallIntegerField 0 到 32767 ~~~ 1.该模型字段类似 [PositiveIntegerField] 但是只允许小于某一特定值(依据数据库类型而定)。 2.从0 到 32767 这个区间,对于Django所支持的所有数据库而言都是安全的。 ~~~ * * * * * </br> >[danger] ##### DecimalField保存小数 ~~~ class DecimalField(max_digits=None, decimal_places=None, **options) 两个参数 max_digits:位数总数,包括小数点后的位数。 该值必须大于等于decimal_places decimal_places:小数点后的数字数量 保存999.99实例 models.DecimalField(..., max_digits=5, decimal_places=2) ~~~ * * * * * </br> >[danger] ##### FloatField保存小数 ~~~ 用Python的一个float 实例来表示一个浮点数. ~~~ >[info] ## BOOLEAN 设置 >[danger] ##### BooleanField true/false 字段 ~~~ 1.如果[Field.default]没有指定的话, BooleanField 的默认值是 None 2.只能填写True 或者 Flase,否则会报错 3.models.T_Boolean.objects.create(t_boolean=True) ~~~ * * * * * <br> >[danger] ##### NullBooleanField true/flase 用来设置 是否可以为null ~~~ 1.如果你需要设置[null]值,则使用[NullBooleanField]来代替BooleanField ~~~ * * * * * <br> >[info] ## 用来储存字符串 >[danger] ##### CharField-限制长度 ~~~ 1.class CharField(*max_length=None*, ***options*)[source] 2.一个用来存储从小到很大各种长度的字符串的地方 3.注意CharField必须接收一个额外的参数max_length将 4.会在model或者数据库级别强制性的限定字段长度 ~~~ * * * * * <br> >[danger] ##### TextField ~~~ 1.class TextField(**options) 2.大文本字段。 该模型默认的表单组件是[Textarea],如果你在这个字段类型中使用了max_length属性, ~~~ * * * * * <br> >[danger] ##### URLField- url字段设置 ~~~ 1.class URLField(max_length=200, **options) 2.一个[CharField]类型的URL 3.这个字段默认的表单组件是一个[TextInput] ~~~ * * * * * <br> >[info] ## 时间字段设置 ~~~ auto_now -> 更新时,自动更新为当前时间 【变】 auto_now_add -> 创建时,自动生成时间 【不变】 注:auto_now当直接调用update更新自动更新无效,需要用save ~~~ 更新的时候auto_now的字段会自动更新,不用去特意调整时间,也就导致了更新的时候不能用下面的第一行,而是save配合 ~~~ obj = UserGroup.objects.filter(id=1).update(caption='CEO') obj = UserGroup.objects.filter(id=1).first() obj.caption = "CEO" obj.save() ~~~ >[danger] ##### TimeField--datetime.time() ~~~ 格式00:00:00 1.class TimeField(auto_now=False, auto_now_add=False, **options) 2.时间字段,和Python中 datetime.time 一样。 接受与[DateField]相同的自动填充选项。 3.这个字段默认的表单组件是一个[TextInput]. Admin添加一些JavaScript快捷方式。 ~~~ * * * * * <br> >[danger] ##### DateField--datetime.date ~~~ 1.日期格式 YYYY-MM-DD 对应的 python 函数 datetime.date 2.class DateField(auto_now=False, auto_now_add=False, **options)[source] ~~~ * * * * * <br> >[danger] ##### DateTimeField--datetime.datetime ~~~ 1.日期+时间格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]对应的 python 函数 datetime.datetime,参数使用同上 ~~~ * * * * * <br> >[info] ## 文件上传 >[danger] ### FileField 上传文件字段 >class FileField(upload_to=None, max_length=100, **options) 参数upload_to:该属性提供设置上传目录和文件名的方式,可以通过两种方式进行设置 使用的时候在setting.py文件中设置好相关属性 ~~~ MEDIA_ROOT = os.path.join(BASE_DIR, 'upload/') MEDIA_URL = '/upload/' #这个是在浏览器上访问该上传文件的url的前缀 ~~~ 这个 字段只起到 保存路径的左右实际,文件的储存位置还是,要在写入的时候就设置好 >[danger] ##### views 层 ~~~ f = request.FILES.get('w') obj = models.User.objects.create(avatar=f) ~~~ >[danger] ##### 第一种 ~~~ class MyModel(models.Model): # 文件将上传到MEDIA_ROOT/uploads upload = models.FileField(upload_to='uploads/') ~~~ * * * * * <br> >[danger] ##### 第二种 ~~~ class MyModel(models.Model): # 文件将保存到MEDIA_ROOT/uploads/2015/01/30 upload = models.FileField(upload_to='uploads/%Y/%m/%d/') ~~~ * * * * * <br> >[danger] ##### 第三种 ~~~ def user_directory_path(instance, filename): # file will be uploaded to MEDIA_ROOT/user_<id>/<filename> return 'user_{0}/{1}'.format(instance.user.id, filename) class MyModel(models.Model): upload = models.FileField(upload_to=user_directory_path) ~~~ >[danger] ### ImageField 图片路径 ~~~ ImageField(FileField) - 字符串,路径保存在数据库,文件上传到指定目录 - 参数: upload_to = "" 上传文件的保存路径 storage = None 存储组件,默认django.core.files.storage.FileSystemStorage width_field=None, 上传图片的高度保存的数据库字段名(字符串) height_field=None 上传图片的宽度保存的数据库字段名(字符串) ~~~ * * * * * <br> >[danger] ##### FilePathField ~~~ FilePathField(Field) - 字符串,Django Admin以及ModelForm中提供读取文件夹下文件的功能 - 参数: path, 文件夹路径 match=None, 正则匹配 recursive=False, 递归下面的文件夹 allow_files=True, 允许文件 allow_folders=False, 允许文件夹 ~~~ >[info] ## IP 字段 >[danger] ##### GenericIPAddressField ~~~ 字符串类型,Django Admin以及ModelForm中提供验证 Ipv4和Ipv6 参数: protocol,用于指定Ipv4或Ipv6, 'both',"ipv4","ipv6" unpack_ipv4, 如果指定为True,则输入::ffff:192.0.2.1时候,可解析为192.0.2.1,开启刺功能,需要protocol="both" ~~~