在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
在查找數據的時候,有時候須要對一些數據進行過濾。那麼這時候須要調用objects
的filter
方法。實例代碼以下: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()