乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      老王python:django model的get和filter方法的區(qū)別

       天才白癡書館 2015-04-13

      老王python:django model的get和filter方法的區(qū)別

      django的get和filter方法是django model常用到的,搞清楚兩者的區(qū)別非常重要。

      為了說明它們兩者的區(qū)別定義2個models

      class Student(models.Model):
      name = models.CharField('姓名', max_length=20, default='')
      age = models.CharField('年齡', max_length=20, default='')


      class Book(models.Model):
      student = models.ForeignKey(Student)


      一.先說下django的get方法:

      1django的get方法是從數(shù)據(jù)庫的取得一個匹配的結(jié)果,返回一個對象,如果記錄不存在的話,它會報錯。
      比如我數(shù)據(jù)庫里有一條記錄,記錄的name的值是老王python的話,我用student = Student.objects.get(name='老王python'),
      返回的是一個記錄對象,你可以通過student.__dict__來查看,它返回的是一個字典的形式,{'key':valeus},key是字段的名稱,而values是值的內(nèi)容。
      而如果我用get方法來查詢一個數(shù)據(jù)庫里不存在的記錄,程序會報錯。
      比如:student = Student.objects.get(name='老王'),你自己可以運(yùn)行看下。

      2如果你用django的get去取得關(guān)聯(lián)表的數(shù)據(jù)的話,而關(guān)鍵表的數(shù)據(jù)如果多于2條的話也會報錯。
      比如我的student表里有一個記錄:
      id name age
      1 python 24

      book表:

      id student_id
      1 1
      2 1

      我用
      student = Student.objects.get(name='python')
      book = Book.objects.get(student)
      它也會報錯,因?yàn)閎ook表有2條記錄和student表相匹配。


      二.再說下django filter:

      1django的filter方法是從數(shù)據(jù)庫的取得匹配的結(jié)果,返回一個對象列表,如果記錄不存在的話,它會返回[]。
      比如我數(shù)據(jù)庫里有一條記錄,記錄的name的值是老王python的話,我用student = Student.objects.filter(name='老王python')
      它返回的student是一個對象的列表,可以看的出來student[0]和上面的get方式返回的student的結(jié)果是一樣的。

      2如果你用django的get去取得關(guān)聯(lián)表的數(shù)據(jù)的話,無論關(guān)聯(lián)表有多少記錄的都不會報錯。
      django 除了model比較強(qiáng)大的話,表單和模板也很強(qiáng)大,想要了解表單的可以看看:
      django forms DateTimeField
      django form 顯示
      django form 驗(yàn)證
      django template

      另外我從別的資料里看到filter好像有緩存數(shù)據(jù)的功能,第一次查詢數(shù)據(jù)庫并生成緩存,下次再調(diào)用filter方法的話,直接取得緩存的數(shù)據(jù),會get方法每次執(zhí)行都是直接查詢數(shù)據(jù)庫的,不知道這個是不是正確。

      這是我用了一段時間django的一點(diǎn)心得體會,希望對大家了解django get和filter有幫助!

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多