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)