首頁常見問題正文

Django的orm是干什么的?

更新時間:2023-05-18 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  Django的ORM(對象關(guān)系映射)是一種將數(shù)據(jù)庫中的數(shù)據(jù)映射到Python對象中的技術(shù),它使得開發(fā)者可以通過使用Python代碼來操作數(shù)據(jù)庫,而無需直接編寫SQL語句。ORM還提供了一些便捷的功能,例如查詢優(yōu)化、數(shù)據(jù)驗證等。

  以下是Django ORM的一些基本用法示例:

      1.創(chuàng)建模型類

from django.db import models

class Person(models.Model):
    name = models.CharField(max_length=50)
    age = models.IntegerField()

  上述代碼中,我們定義了一個 Person 類,它繼承了django.db.models.Model類,并定義了兩個屬性name 和age,它們分別對應(yīng)數(shù)據(jù)庫中的表格中的兩個列。

  2.插入數(shù)據(jù)

person = Person(name='Alice', age=25)
person.save()

  我們在以上代碼中創(chuàng)建了一個Person對象,并調(diào)用了save()方法將它保存到數(shù)據(jù)庫中。

  3.查詢數(shù)據(jù)

people = Person.objects.all()
for person in people:
    print(person.name, person.age)

  我們使用Person.objects.all()方法查詢了數(shù)據(jù)庫中的所有Person對象,并遍歷了這些對象并打印了它們的屬性。

  4.更新數(shù)據(jù)

person = Person.objects.get(name='Alice')
person.age = 26
person.save()

  我們使用Person.objects.get()方法在上述代碼中獲取了一個名為Alice的Person對象,并將它的年齡屬性更新為26,然后調(diào)用save()方法將更新保存到數(shù)據(jù)庫中。

  5.刪除數(shù)據(jù)

person = Person.objects.get(name='Alice')
person.age = 26
person.save()

  上述代碼中,我們使用Person.objects.get()方法獲取了一個名為Alice的Person對象,并調(diào)用delete()方法將它從數(shù)據(jù)庫中刪除。

  6.過濾數(shù)據(jù)

adults = Person.objects.filter(age__gte=18)
for adult in adults:
    print(adult.name)

  我們可以使用Person.objects.filter()方法對數(shù)據(jù)庫進(jìn)行過濾,只選出年齡大于等于18歲的Person對象,并遍歷打印了它們的姓名。

  7.外鍵關(guān)聯(lián)

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey(Person, on_delete=models.CASCADE)

  上述代碼中,我們定義了一個Book類,它有一個名為author的外鍵關(guān)聯(lián)到Person模型。

  8.關(guān)聯(lián)查詢

books = Book.objects.filter(author__name='Alice')
for book in books:
    print(book.title)

  上述代碼中,我們使用Book.objects.filter()方法對數(shù)據(jù)庫進(jìn)行過濾,選出所有作者名為Alice的Book對象,并遍歷打印了它們的標(biāo)題。

  這只是Django ORM的基本用法示例,實際上Django ORM 還有很多高級用法和功能,例如聚合、多對多關(guān)系、多級關(guān)聯(lián)查詢等。

分享到:
在線咨詢 我要報名
和我們在線交談!