zoukankan      html  css  js  c++  java
  • Django少年

    orm查询,如果遇到我之前的环境报错

    就可去manage.py中拷贝前四行代码到tests文件中,然后增加两行代码:

    import django
    django.setup()

    或者任意新建一个py文件,在上面写一样的配置

    然后今天我们的主要内容是orm里的一些操作

    1.单表操作

    2.神奇的__查询

    3.图书管理表设计

    4.外键字段(一对多)的增删改查
    5.外键字段(一对一)的增删改查

    6.跨表查询

    又可以分为子查询和联表查询

    7.聚合查询

    8.分组查询

    9.F与Q查询

    首先我们开始单表操作的十三条

    1.all() 是查询所有

    2.filter()是筛选

    3.get()也是筛选,不过选到的是数据对象本身且容易报错,不推荐

    4.first()取queryset中的第一个对象

    5.last()取queryset中最后一个对象

    6.count()统计数据的个数

    7.value()获取对象中指定字段的值列表套字典

    8.value_list()获取对象中指定字段的值列表

    9.order_by()按照指定字段排序

    10.reverse()颠倒顺序

    11.exclude()排除什么什么之外

    12.exists()可以判断是否有值

    13.distinct()去重

    还有一些神奇的__查询

    假设我们已经成功创建了一个表

    比如我们要查询价格大于五百的书籍

    我们可以res=models.Books.objects.filter(price__gt=500)

    __gt代表greater than 大于

    __lt 小于

    __gte greater than equal 大于等于

    __lte 小于等于

    __in=[] 是列表里面的固定数值

    __range=()在这个范围之内

    __year

    __month

    __date

    年月日

    __startswith 以''里的内容开头

    __endswith 以''里内容结尾

    __contain 里面包含''里的内容

    一对多增删改查

    增删改查都有两种方式

    第一个

    models.Book.objects.create(title='SOE-992',price=0,publish_id=1)

    第二个

    publish_obj=models.Publish.objects.filter(pk=2).first()

    models.Book.objects.create(title='SILK-024',price=400,publish=publish_obj)

    第一种

    model.Book.objects.filter(pk=1).update(publish_id=2)

    第二中

    publish_obj=models.Publish.objects.filter(pk=1).first()
    models.Book.object.filter(pk=1).update(publish=publish_obj)

    删除
    models.Book.object.filter(pk=1).delete()

    多对多增删改查

    book_obj=models.Book.objects.filter(pk=2).first()

    book_obj.authors.add(1,2)

    就是把上面的add改成delete

    清空

    也是把上面的add改成clear

    嘿嘿,跨表查询开始啦

    这里正向我只列出一个按字段

    查询诗句主键为二的书的出版社的名字

    book_obj=models.Book.objects.filter(pk=2).first()

    print(book_obj.publish.name)

    反向的话就是

    publish_obj = models.Publish.objects.filter(name='91corn').first()
    print(publish_obj.book_set)
    app01.Book.None# print(publish_obj.book_set.all())

    还有就是用__来找

    查询书籍pk为2的出版社名称

    正向

    res=models.Book.object.filter(pk=2).value('publish_name')

    反向

    res=models.Publish.objects.filter(book__pk=2).values('name')

    这里还是用实例来举例我们懂得快一点

  • 相关阅读:
    dojo grid 组件
    在xpage开发的时候出现xsp is not defined的错误
    关于Xpages中ssjs库相互引用的问题
    Xpages下实现输入智能提示(TypeAhead)功能
    Xpage中对定制控件在设计视图下外观的定制
    xpage中关于dojo版本的配置
    数据库查询优化方案
    查询表结构
    经典SQL语句集锦
    c#导出PDF
  • 原文地址:https://www.cnblogs.com/jimGraymane/p/11945806.html
Copyright © 2011-2022 走看看