17.增刪改查操做

 

模型的操做:

在ORM框架中,全部模型相關的操做,好比添加/刪除等。其實都是映射到數據庫中一條數據的操做。所以模型操做也就是數據庫表中數據的操做。javascript

添加一個模型到數據庫中:

添加模型到數據庫中。首先須要建立一個模型。建立模型的方式很簡單,就跟建立普通的Python對象是一摸同樣的。在建立完模型以後,須要調用模型的save方法,這樣Django會自動的將這個模型轉換成sql語句,而後存儲到數據庫中。示例代碼以下:html

class Book(models.Model):
    name = models.CharField(max_length=20,null=False)
    desc = models.CharField(max_length=100,name='description',db_column="description1")
    pub_date = models.DateTimeField(auto_now_add=True)

book = Book(name='三國演義',desc='三國英雄!')
book.save()

查找數據:

查找數據都是經過模型下的objects對象來實現的。java

查找全部數據:
要查找Book這個模型對應的表下的全部數據。那麼示例代碼以下:python

books = Book.objects.all()


以上將返回Book模型下的全部數據。ios

數據過濾:

在查找數據的時候,有時候須要對一些數據進行過濾。那麼這時候須要調用objectsfilter方法。實例代碼以下:web

books = Book.objects.filter(name='三國演義')
> [<Book:三國演義>]

# 多個條件
books = Book.objects.filter(name='三國演義',desc='test')


調用filter,會將全部知足條件的模型對象都返回。sql

獲取單個對象:

使用filter返回的是全部知足條件的結果集。有時候若是隻須要返回第一個知足條件的對象。那麼可使用get方法。示例代碼以下:數據庫

book = Book.objects.get(name='三國演義')
>> <Book:三國演義>


固然,若是沒有找到知足條件的對象,那麼就會拋出一個異常。而filter在沒有找到知足條件的數據的時候,是返回一個空的列表。api

數據排序:

在以前的例子中,數據都是無序的。若是你想在查找數據的時候使用某個字段來進行排序,那麼可使用order_by方法來實現。示例代碼以下:markdown

books = Book.objects.order_by("pub_date")


以上代碼在提取全部書籍的數據的時候,將會使用pub_date從小到大進行排序。若是想要進行倒序排序,那麼能夠在pub_date前面加一個負號。實例代碼以下:

books = Book.objects.order_by("-pub_date")

修改數據:

在查找到數據後,即可以進行修改了。修改的方式很是簡單,只須要將查找出來的對象的某個屬性進行修改,而後再調用這個對象的save方法即可以進行修改。示例代碼以下:

from datetime import datetime
book = Book.objects.get(name='三國演義')
book.pub_date = datetime.now()
book.save()

刪除數據:

在查找到數據後,即可以進行刪除了。刪除數據很是簡單,只須要調用這個對象的delete方法便可。實例代碼以下:

book = Book.objects.get(name='三國演義')
book.delete()
相關文章
相關標籤/搜索