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

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