zoukankan      html  css  js  c++  java
  • Django Model笔记

    常用数据类型

    # https://docs.djangoproject.com/en/1.8/ref/models/fields/#field-types

    BooleanField:布尔类型true/false

    NullBooleanField:相当于设置了null=True的BooleanField

    IntegerField:整形

    CommaSeparatedIntegerField:逗号分隔的整形

    CharField:max_length,必填

    TextField:None

    EmailField:None

    GenericIPAddressField:存储IP地址

    URLField:verify_exists(True),检查URL可用性

    FileField:upload_to 可选

    DateTimeField、DateField、TimeField:auto_now(True)可选,每次动作都会更新 / auto_now _add(True),可选,一次产生

    ForeignKey:外键, 如果为空设置参数null=True, blank=True

    自定义方法

    # https://docs.djangoproject.com/en/1.8/topics/db/models/#overriding-predefined-model-methods

    class Blog(models.Model):
        name = models.CharField(max_length=100)
        tagline = models.TextField()
     
        def save(self, *args, **kwargs):
            do_something()
            super(Blog, self).save(*args, **kwargs) # Call the "real" save() method.
            do_something_else()
     
        def get_name(self):
            return self.name
     

    查询API

    filter(**kwargs) 匹配条件
    exclude(**kwargs) 不匹配条件
    order_by(*fields) 排序
    reverse() 反向排序
    distinct() 去除重复记录
    values(*fields) 可迭代的字典序列
    values_list(*fields) 返回元组序列
    all() 查询所有
    raw(*args, **kwargs) 执行原生sql
    defer(*fields) 延后加载字段
    only(*fields) 立即载入字段
    using(alias) 使用数据库,多数据库时使用
    select_for_update(nowait=False) 行锁定
    get(**kwargs) 单个查询
    create(**kwargs) 创建对象并保存
    get_or_create(defaults=None,**kwargs) 查询不到就创建 defaults={'desc': 'new'}
    bulk_create(objs, batch_size=None) 批量创建
    count() 对象数量
    latest(field_name=None) 返回该字段最新的对象
    exists() 是否包含数据
    update() 更新数据
    delete() 删除数据
    

      

    Filter查询条件

    __exact        精确等于 like 'aaa'
    __iexact 精确等于 忽略大小写 ilike 'aaa' __contains 包含 like '%aaa%' __icontains 包含 忽略大小写 ilike '%aaa%' __gt 大于 __gte 大于等于 __lt 小于 __lte 小于等于 __in 存在于一个list范围内 __startswith 以...开头 __istartswith 以...开头 忽略大小写 __endswith 以...结尾 __iendswith 以...结尾,忽略大小写 __range 在...范围内 __year 日期字段的年份 __month 日期字段的月份 __day 日期字段的日 __isnull=True/False

     

    Q 与 F 查询

    from django.db.models import F, Q
     
    Q用于复杂的查询
    and --> XX.objects.filter(Q(f=1),Q(f=2)) # f == 1 and f == 2
    or --> XX.objects.filter(Q(f=1) | Q(f=2)) # f ==1 | f == 2
    not --> XX.objects.filter(~Q(f=1),Q(f=2)) # f != 1 and f == 2
    

      

    F 查询条件两个字段相等的值
    Server.objects.filter(master_ip=F('backup_ip'))
    

      

     

  • 相关阅读:
    写给自己的话
    软件开发之技能梳理
    《创新者的窘境》读书笔记
    我的四年踩坑史以及思考
    认识问题和求解问题的一种思考框架
    《时间的秩序》读书笔记
    从JSON中自动生成对应的对象模型
    考考你:一道题引发的小思考
    哈!如果一生只如花样短暂
    使用正则表达式抽取所需文本
  • 原文地址:https://www.cnblogs.com/letong/p/4933722.html
Copyright © 2011-2022 走看看