小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 天才白癡書館 2015-04-13

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

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

為了說(shuō)明它們兩者的區(qū)別定義2個(gè)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)


一.先說(shuō)下django的get方法:

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

2如果你用django的get去取得關(guān)聯(lián)表的數(shù)據(jù)的話,而關(guān)鍵表的數(shù)據(jù)如果多于2條的話也會(huì)報(bào)錯(cuò)。
比如我的student表里有一個(gè)記錄:
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)
它也會(huì)報(bào)錯(cuò),因?yàn)閎ook表有2條記錄和student表相匹配。


二.再說(shuō)下django filter:

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

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

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

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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多