ORM映射(对象关系映射)分建立表和操做表两个部分建立单表建立关联表(foreignKey) 一对一 一对多(重点) 多对多(重点) 建立表后加str方法把打印的地址转换成对应字符表的操做(增删改查):1.增(create,save) from app01.modals import * create方式一:Author.objects.create(name="eric") create方式二:Author.objects.create(*{"name":"eric"}) save方式一:author = Author(name="eric") author.save() save方式二:author=Author() author.name="eric" author.save()2.删(delete) Book.object.filter(id=1).delete() (3,{'app01.Book_authors':2,'app01.Book':1})3.改(update,save) update直接改:Publisher.objects.filter(id=2).update(name='eric') save至关于从新赋值:author=Author.object.get(id=5) author.name='eric' author.save()4.查(filte,value等) 查询API:54-02 filter:(**kwargs) :它包含了与所给筛选条件相匹配的对象 all():查询全部结果 get(**kwargs):返回与所给筛选条件匹配的对象,返回结果有且只有一个,若是符合筛选条件的对象超过一个或者没有都会 抛出错误。 对查询结果进行处理: values(**kwargs):返回一个ValueQuerySet 一个特殊的QuerySet,运行后获得的并非一系列model的实例化对象,而 是一个可迭代的字典序列 exclude(**kwargs):它包含了与所给筛选条件不匹配的对象 order_by(*field):对查询结果排序 reverse():对查询结果反向排序 distinct():从返回结果中剔除重复记录 values_list(*field):它与values()很是类似,它返回的是一个元组序列,values返回的是一个字典序列 count():返回数据库中匹配查询(QuerySet)的对象数量。 fist():返回第一条记录 last():返回最后一条记录 exists():若是QuerySet包含数据就返回True,不然就返回False 惰性机制: 1.可迭代 2.可切片5.重点:如何建立存在一对多或多对多关系一本书的信息呢?(如何处理外键关系的字段如一对多的publisher和 多对多的authors) 一对一(OneToOne): 一对多(foreignKey): 插入(1)models.Book.object.create(title="Python",publish_id=2) (2)推荐使用: models.Book.object.create(title="Python",publish=obj) 因为绑定一对多的字段,好比publlish_id 多对多(经过外键和方法自动建立第三张表):model.manytomanyfield() 自动建立第三张表: add()绑定关系 remove()解除关系 ----正向查询(例子是从2开始创建的正向查询) book=models.Book.objects.filter(id=2)[0] #获取id=2时的参数值 authors=models.Author.objects.filter(id__gt=2) #大于2 book.author.add(*authors) book.author.remove(*authors) #移除关系 ----反向查询 (例子是从3开始到2创建的反向查询) author=models.Author.objects.filter(id=3)[0] books=models.Book.objects.filter(id__gt=2) author.book_set.add(*books) author.book_set.remove(*books) #移除关系 非自动建立第三张表(手动): 手动建表能够直接插入数据 联合惟一:unique_together=['字段','字段'] 控制台执行数据库操做: python manage.py makemigrations python manage.py migrate 注:第三张表的删除会出现级联删除状况,update()方法要用集合对象才能调用 manytomany():经过两个foreignKey 缓存时用iterator()方法把对象封装成可迭代对象