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'))
    

      

     

  • 相关阅读:
    GitLab 介绍
    git 标签
    git 分支
    git 仓库 撤销提交 git reset and 查看本地历史操作 git reflog
    git 仓库 回退功能 git checkout
    python 并发编程 多进程 练习题
    git 命令 查看历史提交 git log
    git 命令 git diff 查看 Git 区域文件的具体改动
    POJ 2608
    POJ 2610
  • 原文地址:https://www.cnblogs.com/letong/p/4933722.html
Copyright © 2011-2022 走看看