美文网首页
Django -- Database API

Django -- Database API

作者: liaozb1996 | 来源:发表于2018-03-27 21:28 被阅读0次

    Create

    对应关系:

    • Model Class -- Database Table
    • 实例对象 -- 数据库中的一行(record)
    Tom = People(name='Tom', age=18)
    Tom.save()
    
    # ----------
    # 使用 create() 时,不用调用 save() 
    People.objects.create(name='Tom', age=18) # 返回对象
    

    Update

    Tom = People.objects.get(name='Tom')
    Tom.age = 20
    Tom.save()
    
    # 将所有设置为 100 岁
    Tom = People.objects.all().update(age=100)
    

    Retrieve

    QuerySet 代表一个集合,类似数组,不支持负数索引

    People.objects.all() -- return: QuerySet
    People.objects.order_by(-field_name) -- return: QuerySet (可以包含多个fieldname, 负号表示反序)
    
    People.obejcts.filter(lookup) -- return: QuerySet
    People.objects.exclude(lookup) -- return: QuerySet
    People.objects.get(lookup) -- return: 第一个匹配的对象
    

    # 两个 lookup 在数据库表示用 AND 相连:lookup1 AND lookup2 
    People.obejcts.filter(lookup1, lookup2) -- return: QuerySet
    

    People.obejcts.filter(lookup1).exclude(lookup2)
    

    Lookup 表达式

    Lookup 格式:fieldName__lookupType (双下划线)

    Lookup Type:

    • exact / iexact
    • contains / icontains
    • startswith / istartswith
    • endswith / iendswith

    • lt / lte (less than / less that equal)
    • gt / gte (great than / great than equal)

    • i 开头表示忽略大小写
    • exact 是隐含的(默认)
    # 以下两行代码相当
    People.objects.filter(age=18)
    People.objects.filter(age__exact=18)
    

    # 名字以 Tom 开头的人
    People.objects.filter(name__startswith='Tom')
    

    F() & Q()

    F() 用于引用项的值,来和自身比较

    People.objects.filter(first_name = F('last_name'))
    
    • F() 支持基本数学操作

    Q() 用于 SQL 中的 OR 语句

    # 筛选出 18 岁或 19 岁的人
    People.objects.filter(Q(age=18) | Q(age=19))
    

    Delete

    delete 调用于 实例对象 或 QuerySet

    People.objects.get(name='Tom').delete()
    # 删除 People 中的所有对象
    People.obejcts.all().delect()

    相关文章

      网友评论

          本文标题:Django -- Database API

          本文链接:https://www.haomeiwen.com/subject/yuzscftx.html