ORM映射(对象关系映射)

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()方法把对象封装成可迭代对象
相关文章
相关标签/搜索