pycharm軟件開發(fā)django項(xiàng)目外鍵和表關(guān)系
模型的操作:
在ORM框架中,所有模型相關(guān)的操作,比如添加/刪除等。其實(shí)都是映射到數(shù)據(jù)庫中一條數(shù)據(jù)的操作。因此模型操作也就是數(shù)據(jù)庫表中數(shù)據(jù)的操作。
添加一個模型到數(shù)據(jù)庫中:
添加模型到數(shù)據(jù)庫中。首先需要創(chuàng)建一個模型。創(chuàng)建模型的方式很簡單,就跟創(chuàng)建普通的Python對象是一摸一樣的。在創(chuàng)建完模型之后,需要調(diào)用模型的save方法,這樣Django會自動的將這個模型轉(zhuǎn)換成sql語句,然后存儲到數(shù)據(jù)庫中。示例代碼如下:
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()
查找數(shù)據(jù):
查找數(shù)據(jù)都是通過模型下的objects對象來實(shí)現(xiàn)的。
查找所有數(shù)據(jù):
要查找Book這個模型對應(yīng)的表下的所有數(shù)據(jù)。那么示例代碼如下:
books = Book.objects.all()
以上將返回Book模型下的所有數(shù)據(jù)。
數(shù)據(jù)過濾:
在查找數(shù)據(jù)的時候,有時候需要對一些數(shù)據(jù)進(jìn)行過濾。那么這時候需要調(diào)用objects的filter方法。實(shí)例代碼如下:
books = Book.objects.filter(name='三國演義')
> [<Book:三國演義>]
# 多個條件
books = Book.objects.filter(name='三國演義',desc='test')
調(diào)用filter,會將所有滿足條件的模型對象都返回。
獲取單個對象:
使用filter返回的是所有滿足條件的結(jié)果集。有時候如果只需要返回第一個滿足條件的對象。那么可以使用get方法。示例代碼如下:
book = Book.objects.get(name='三國演義')
> <Book:三國演義>
當(dāng)然,如果沒有找到滿足條件的對象,那么就會拋出一個異常。而filter在沒有找到滿足條件的數(shù)據(jù)的時候,是返回一個空的列