8.3

8.00-12

静态文件的设置:

引用bootstrap,jquery时候(),需要新建一个static文件和修改settings.py,存放其引用的代码:
1.创建一个本地文件夹存放:模板文件

2.设置setting里面的配置

STATIC_URL = ‘/static/’

STATIC_DIRS=[
os.path.join(BASE_DIR,‘文件名’)
]

ORM的多表操作:
1.添加记录

一对多:
publish_obj=Publish.object.get(nid=1)
book_obj=Book.objects.create(title=‘123’,publishdata=‘213’,publish=publish_obj)

book_obj=Book.objects.create(‘title’=‘asd’,publish_id=1)

多对多:
核心:先第三张关系表添加记录
app01_book_author

id book_id uthpr_id
1 1 2
book_obj.authors.add()
book_obj.authors.remove()
******************.clear()
******************set()
******************all()

2.基于对象的跨表查询(基于sql语句:子查询) :

正向查询/反向查询( _set):
一对多:
-----正向查询:book.publish (得到一个对象)
-----反向查询:pub_obj.book_set.all() (一个出版社有多个图书,加集合set)
多对多:

-----正向查询:book.publish.all()
-----反向查询:pub_obj.book_set.all()

一对多:

-----正向查询:book.publish
-----反向查询:pub_obj.book)

3.基于双下划线的跨表查询(基于join实现的):
1.主要是要清晰其关联的关系:使用__来简便其中 的sql语法:

4.聚合函数: agggregate

from django.db.models import Avg,Max,Sum,Min,Count

ret=Book.objects.all().agggregate(princeAvg=Avg(‘price’))

print(ret) #{‘princeAvg’:142.0}

ret=Book.objects.all().aggregate(c=Count(‘nid’))

print(ret) #{‘c’:4}

5.分组:
annotate
#以dep.id为分组,取得dep.name,与count(‘emp’)内容。

ret=dep.objetcs.values(“id”).annotate(c=Count(“emp”)).values(“name”,“c”) #以dep.id为分组,取得name
print(ret) #[ { },{ } ]
Author.objects.values(‘nid’).annotate(m=Max(‘book__price’)).values(‘name’,‘c’)
关于Author.objects.values(‘nid’).annotate(m=Max(‘book__price’))可以在后面加values,可以将
annotate看作是一个将author添加一个Max(‘book_price’)属性, 这个添加属性后的Author也可以使用
values方法。

6.filter == hiding 筛选

7.order by ==order by

8.F:查询
查询评论数大于两倍点赞数的所有书籍名称

from django.db.modeels import Q
commnetNum__lt=F(‘keepNum’)2 既F可以将 ()/-+ 可以加减乘除

9Q查询:
其他逻辑判断:

from django.db.models import Q
对于sql里面的 where 1 or 2 = Q(1) | Q(2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值