• Django——模型层-单表操作(常用和非常用字段和参数,查询表记录API,模糊查询,删改表记录)


    一、常用和非常用字段和参数

    # 常用字段
        -IntegerField   整数
        -AutoField
        -BooleanField
        -CharField
        -DateField
        -DateTimeField
        -DecimalField
        -FileField   上传文件,本质是varchar
        -ImageField   图片,本质是varchar,继承了FileField
        -TextField   存大文本
        -EmailField   本质是varchar
    # 非常用字段
        -BigAutoField
        -SmallIntegerField   
        -PositiveSmallIntegerField
        -PositiveIntegerField
        -BigIntegerField
        
        
                'AutoField': 'integer AUTO_INCREMENT',
                'BigAutoField': 'bigint AUTO_INCREMENT',
                'BinaryField': 'longblob',
                'BooleanField': 'bool',
                'CharField': 'varchar(%(max_length)s)',
                'CommaSeparatedIntegerField': 'varchar(%(max_length)s)',
                'DateField': 'date',
                'DateTimeField': 'datetime',
                'DecimalField': 'numeric(%(max_digits)s, %(decimal_places)s)',
                'DurationField': 'bigint',
                'FileField': 'varchar(%(max_length)s)',
                'FilePathField': 'varchar(%(max_length)s)',
                'FloatField': 'double precision',
                'IntegerField': 'integer',
                'BigIntegerField': 'bigint',
                'IPAddressField': 'char(15)',
                'GenericIPAddressField': 'char(39)',
                'NullBooleanField': 'bool',
                'OneToOneField': 'integer',
                'PositiveIntegerField': 'integer UNSIGNED',
                'PositiveSmallIntegerField': 'smallint UNSIGNED',
                'SlugField': 'varchar(%(max_length)s)',
                'SmallIntegerField': 'smallint',
                'TextField': 'longtext',
                'TimeField': 'time',
                'UUIDField': 'char(32)',
                    
    # 常用参数
        -null
        -max_length
        -default
        -primary_key
        -unique
        -db_index
        
        # 
        -choices:比较常用(后面再说)
        -blank: django admin里提交数据,限制
            
    # 元数据
        -必须记住的
        class Meta:
                # 表名
            db_table = "book"
            #联合索引
            index_together = [
                ("name", "publish"),
            ]
            # 联合唯一索引
            unique_together = (("name", "publish"),)
            
       -了解
            # admin中显示的表名称
            verbose_name='图书表'
            #verbose_name加s
            verbose_name_plural='图书表'
            

    二、查询表记录API

    <1> all():                  查询所有结果
    <2> filter(**kwargs):       它包含了与所给筛选条件相匹配的对象
    <3> get(**kwargs):          返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
    <4> exclude(**kwargs):      它包含了与所给筛选条件不匹配的对象
    <5> order_by(*field):       对查询结果排序('-id')
    <6> reverse():              对查询结果反向排序
    <8> count():                返回数据库中匹配查询(QuerySet)的对象数量。
    <9> first():                返回第一条记录
    <10> last():                返回最后一条记录
    <11> exists():              如果QuerySet包含数据,就返回True,否则返回False
    <12> values(*field):        返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列       
           model的实例化对象,而是一个可迭代的字典序列
    <13> values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列 <14> distinct(): 从返回结果中剔除重复纪录

    三、基于双下划线的模糊查询

    ps:gt,gte,lt,lte缩写的含义

    gt: greater than 大于

    gte: greater than or equal 大于等于

    lt: less than 小于

    lte: less than or equal 小于等于

    #1  价格在[100,200,300]这三个数字范围内 注意与range区别
    Book.objects.filter(price__in=[100,200,300]) 
    # 2 大于,小于,大于等于,小于等于
    Book.objects.filter(price__gt=100) #gt 大于
    Book.objects.filter(price__lt=100) #lt 小于
    Book.objects.filter(price__gte=100) #gte 大于等于
    Book.objects.filter(price__lte=100) #lte小于等于
    # 3 范围
    Book.objects.filter(price__range=[100,200])
    # 包含
    Book.objects.filter(title__contains="python")
    # 4 忽略大小写包含
    Book.objects.filter(title__icontains="python")
    # 5 以xx开头
    Book.objects.filter(title__startswith="py")
    # 6 时间类型,年份是2012年的
    Book.objects.filter(pub_date__year=2012)
    
    
    
        # 基于双下滑线的模糊查询
        # 1 in条件
        # res=models.Book.objects.filter(name__in=['西游记', '金梅'])
        # print(res)
        # 2 大于,小于,大于等于,小于等于
        # res=models.Book.objects.filter(id__gt=2)
        # res=models.Book.objects.filter(id__lt=2)
        # res=models.Book.objects.filter(id__gte=2)
        # res=models.Book.objects.filter(id__lte=2)
        # print(res)
    
        # 3 rang 范围 BETWEEN 1 AND 3   表示id范围是1,2,3 注意与in区别
        # res=models.Book.objects.filter(id__range=[1,3])
        # print(res)
    
        # 包含
        # res=models.Book.objects.filter(name__contains="金")
        # print(res)
        # 忽略大小写的包含
        # res=models.Book.objects.filter(name__icontains="金")
        # print(res)
        #
        # res=models.Book.objects.filter(name__startswith="金")
        # print(res)
        # res = models.Book.objects.filter(name__endswith='梅')
        # print(res)
    
        #
        # res=models.Book.objects.filter(publish_date__year='2020')
        # res=models.Book.objects.filter(publish_date__month='9')
        # print(res)

    四、删除表记录

    # 删除的两种方式
        # 第一种:queryset的delete方法
        # res=models.Book.objects.all().delete()
        # print(res)
        # 第二种:对象自己的delete方法
        # book = models.Book.objects.all().filter(name='金梅').first()
        # print(type(book))
        # res=book.delete()

    五、修改表记录

     #修改记录
        # 第一种:queryset的update方法
        # res=models.Book.objects.filter(publish='东京').update(name='金梅1')
        # print(res)
        # 第二种:对象自己的
        book = models.Book.objects.filter(name='xxx').last()
        book.name='asdfasd'
        book.save()
  • 相关阅读:
    结构体字节对齐
    ORACLE自增长字段实现
    Oracle 11.2.0.2新特性——用户重命名(Rename User)
    oracle expdp/impdp 用法详解
    sql语句面试题(城市人口统计) .
    ORA30553: 函数不确定!
    SQL Express自动备份 .
    SQL 2005的DES加密算法
    SQL 2005加密数据方法
    CREATE VIEW ORA01031
  • 原文地址:https://www.cnblogs.com/guojieying/p/13807534.html
Copyright © 2020-2023  润新知