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()方法把對象封裝成可迭代對象
相關文章
相關標籤/搜索