django模型使用

以前寫過一篇django的模型關係,今天騰出時間把上篇的兄弟篇補上,來學習下django orm, 利用django的模型能夠很方便的對數據庫進行操做,以前開發人員是必需要具有必定sql基礎的,但若是有些開發人員就是不想了解sql呢,在以前,不懂那是萬萬不行的,但自從有了orm,開發人員就能夠在不懂sql的狀況下也能完成對數據庫的增刪改查操做,今天咱們就來看看如何實現這些基本的需求,開始前咱們先定義一個模型,在models.py文件裏寫入:sql


class Info(models.Model):數據庫

    name = models.CharField(max_length=100)django

    age = models.IntegerField(default=0)app

    email = models.EmailField()ide

有了這個模型,咱們就來看最基本的對數據操做實現方法,學習

一、查:spa

首先若是要獲取全部信息,能夠用all,代碼以下:orm

all_per=Info.objects.all()     #至關於select * from Info對象

若是要獲取單個對象可用:ci

Info.objects.get(name=’john’)

如何要過濾返回的信息,例如要查詢名字是john的,能夠用filter:

Info.objects.filter(name=’john’)     #至關於select * from Info where name=’jhon’

條件組合查詢也是支持的,例如項目等於john,郵件是john@gmail.com的

Info.objects.filter(name=’john’, mail=’john@gamil.com’)

模糊查詢,雖然這個不到萬不得已不用,有時候仍是有可能用到的,例如查詢名字裏包含john的,

INfo.objects.filter(name__contains=’john’)   #至關於select * from Info where name LIKE ‘%john%’

固然若是你查詢的某些數據不想要,能夠用exclude,例如查詢全部名字是john的,但email不是test@gmail.com的:

Info.objects.filter(name=’john’).exclude(email=’test@gmail.com’)

最後查完的數據若是想排個序,好比按年齡,能夠這樣:

Info.objects.all().order_by(‘age’),若是反向查下能夠在age前面加一個-(減號)便可。

若是隻想看前10我的呢,能夠用切片,很是靈活,以下:

Info.objects.all().order_by(‘age’)[:10]

以上就是比較經常使用的查詢對數據的操做了,基本知足咱們對數據查詢的需求,接下來咱們說增長。

二、增

若是要添加一個用戶,只須要獲取用戶的信息,通常是來自前臺表單,實例化模型,而後調用save保存便可,例如:

person = Info(name=’john’,age=20, email=’john@gmail.com’)

person.save()

這二步就完成了數據的保存。

三、改

若是數據庫中某我的郵箱寫錯了,能夠先查出來,而後作更新:

p = Info.objects.get(name=’john’)

p.email=’test@gmail.com’

p.save()

這樣就修改了這條記錄,若是想對多條進行修改能夠本身加條件過濾後修改,例如把全部條目的email所有修改爲abc@gmail.com,固然這個例子有點扯,只是爲說明用法:

Info.object.all().update(email=’abc@gmail.com’)

四、刪除

最後咱們說刪除,用模型來操做很是簡單,基本步驟是先查出你要刪的對象,而後執行delete()便可,例如要刪除名字是john的記錄,能夠這樣:

p = Info.objects.filter(name=’john’)

p.delete()

這樣就刪除了,固然這是對1條記錄的操做,刪除整個表的方法我就不寫了,有興趣本身去查查吧

這篇就到這裏,我我的感覺是用orm來操做數據庫仍是很是方便的,整個代碼中也沒必要寫任何的sql語句,固然這種orm也並不能覆蓋全部的操做,有的地方仍是不得不寫sql來完成,因此django也支持原生的sql語句,感興趣的能夠去看下官方文檔。

相關文章
相關標籤/搜索