• django 模型类的常见字段约束,以及filter 过滤和查询


    null

    不设置时默认设置为False。设置为True时,数据库表字段中将存入NULL的记录。 null和blank组合使用,null=True,blank=True,表示该字段可以为空

    blank

    默认设置为False。设置为True时,表字段许可无任何输入。设置为False 时,表字段为必须输入的字段

    choices

    备选设置。选择列表选项,如果设置后,该字段的表单必然会是下拉选择的。这个值必须是一个有小括号构成的元组,每个元组前一个字段将存入数据库,后一个字段是显示给用户看的。

    default

    默认值,设置后在用户无输入时,表字段将以这个选项的内容来存储到数据库字段

    可以为python 支持的任意数据对象

    editable

    如何设置为False,将不会参与到表单的验证。默认是设置为True的

    error_messages

    这个选项实现校验时的错误提示。是字典结构的内容。

    help_text

    在表单中形成输入提示内容

    primary_key

    主键,设置为 True ,该字段将启用为主键。 默认是 False

    unique

    设置为 True 启用不存在重复值输入的设定,默认为False

    unique_for_date

    设定日期不存在重复输入,默认为False

    verbose_name

    字段的文本标签

    validators

    校验选项,用来配置校验的方法,构成的列表。

    max_length

    最大输入字符串的长度

    min_length

    最少输入字符串的长度


    AutoField 自动增值的id字段

    primary_key=True 为必设置选项

    BigAutoField 自动增值的id字段

    支持 1 到 9223372036854775807,之间的序号

    BigIntegerField 长整形字段

     从 -9223372036854775808 到9223372036854775807 的整数

    BinaryField 二进制字段

    存储内存二进制数据,以 python bytes 对象来访问

    BooleanField 布尔值字段

    如果许可空的布尔值输入,换用 NullBooleadField

    CharField可变长字符串字段

    max_length 有最大输入选项为必须设置的选项

    DateField日期字段

    auto_now:每一次保存对象时,Django 都会自动将该字段的值设置为当前时间。一般用来表示 "最后修改" 时间。要注意使用的是当前日期,而并非默认值,所以

    不能通过重写默认值的办法来改变保存时间。

    auto_now_add:在第一次创建对象时,Django 自动将该字段的值设置为当前时间,一般用来表示对象创建时间。它使用的同样是当前日期,而非默认值

    DateTimeField 有时刻的日期字段

    auto_now=False

    auto_now_add=False

    当auto_now或者auto_now_add设置为True时,字段会有editable=True和blank=True的设定

    ; 固定精度的十进制数的字段。

    它有两个必须的参数

    max_digits:数字允许的最大位数

    decimal_places:小数的最大位数

    例如,要存储的数字最大值是999,而带有两个小数位,你可以使用

    models.DecimalField(..., max_digits=5, decimal_places=2)

    DurationField 日期时间增量型字段,存储着python timedelta 类数据

    EmailField 邮件字段

    FileField 文件字段

    FilePathField 文件路径字段

    FloatField 小数字段

    ImageField 图片字段

    IntegerField 整数字段

    GenericIPAddressField ip地址字段

    NullBooleanField 许可null的布尔值字段

    PositiveIntegerField

    0 到 2147483647,支持所有数据库取值范围的安全整数。

    PositiveSmallIntegerField

    0 到 32767 支持所有数据库取值范围的安全短整数。

    SlugField

    SmallIntegerField 短整形字段

    TextField 备注型字段,用于存储复杂

    TimeField 时间字段

    URLField 网址字段

    UUIDField

    Python UUID 数据对象,一个32位长度的ID字符串

    映射字段

    ForeignKeyField 一对多字段

    映射字段

    ManyToManyField 多对多字段

    映射字段

    OneToOneField 一对一字段

    表的查询

    查询

    Person.objects.all().order_by(“-username”)   按照username字段值 反向排序

    Person.objects.all()[:10]切片操作,获取10个人,不支持负索引,切片可以节约内存,不支持负切片

    Person.objects.get(name=name)  get获取不到报异常,不可取

    get是用来获取一个对象的,如果需要获取满足条件的一些人,就要用到filter

    Person.objects.filter(name="abc")# 等于

    Person.objects.filter(name__exact="abc")名称严格等于 "abc" 的人

    Person.objects.filter(name__iexact="abc")# 名称为abc 但是不区分大小写,可以找到ABC, Abc, aBC,这些都符合条件

    ***Person.objects.filter(name__contains="abc")# 名称中包含"abc"的人

    ***Person.objects.filter(name__icontains="abc")#名称中包含"abc",且abc不区分大小写

    Person.objects.filter(name__regex="^abc")# 正则表达式查询

    Person.objects.filter(name__iregex="^abc")#正则表达式不区分大小写

    ****

    Person.objects.filter(age__gt=15)# age > 15

    Person.objects.filter(age__lt=15)# age < 15

    Person.objects.filter(age__gte=15)# age >= 15

    Person.objects.filter(age__lte=15)# age <= 15

    Person.objects.filter(age__ne=15)# age != 15

    数据的归档

     times = Person.objects.datas('add_time','month',order='desc')  默认正序,desc 倒序

     month   表示精准到月

     前端页面

    {%  for time  in times %} 

         {{ time.year }} 年 {{time.month}} 月 {{time.day}}日    精准到月,这个time.day  永远是 1

    {% endfor %}

    filter 过滤有多个条件时

    使用django的Q对象表示或者

    from django.db.models import Q

    Person.objects.filter(Q(name='张三') | Q(age=18))

    查询过滤字段

    __exact 精确等于                              like 'aaa'

     __iexact 精确等于 忽略大小写                ilike 'aaa'

     __contains 包含                              like'%aaa%'

     __icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。

    __gt 大于

    __gte 大于等于

    __lt 小于

    __lte 小于等于

    __in存在于一个list范围内

    *****

    __startswith以...开头

    __istartswith以...开头忽略大小写

    __endswith以...结尾

    __iendswith以...结尾,忽略大小写 

    __range 在...范围内

    __year日期字段的年份   如   .filter(add_time_year ='2018')  筛选添加时间年份为2018年的数据

    __month日期字段的月份

    __day日期字段的日

    __isnull=True/False

  • 相关阅读:
    675 对象的引用-浅拷贝-深拷贝
    674 vue3侦听器watch
    673 vue计算属性:缓存,setter和getter
    明明有了promise,为啥还需要async await?
    Js常用数组方法汇总
    一些非常有用的Js单行代码
    Js获取验证码倒计时
    前端截取字符串:JS截取字符串之substring、substr和slice详解
    javascript全局变量与局部变量
    JS实现快速排序算法
  • 原文地址:https://www.cnblogs.com/pythonClub/p/9932024.html
Copyright © 2020-2023  润新知