django 一對多關係操作

2021-12-30 02:38:49 字數 1266 閱讀 9001

這段時間用django 做程式用到了一對多的關係的操作,下面分享一些心得體會,希望對大家有幫助。

我先定義兩個模型,乙個是作者,乙個是作者出版的書籍,算是一對多的型別。

class person(models.model);

name = models.charfield('作者姓名', max_length=10)

age = models.integerfield('作者年齡')

class book(models.model):

person = models.foreignkey(person, related_name='person_book')

title = models.charfield('書籍名稱', max_length=10)

pubtime = models.datefield('出版時間')

如果我們要查詢乙個作者出版了哪些書籍的話,那我們要怎麼做呢?

先查找到作者的資訊

person = person.objects.fiter(你的條件)

返回乙個person物件

接下來就查詢person關聯的所有書籍物件

book = person.book_set.all()

django 預設每個主表的物件都有乙個是外來鍵的屬性,可以通過它來查詢到所有屬於主表的子表的資訊。

這個屬性的名稱預設是以子表的名稱小寫加上_set()來表示,預設返回的是乙個querydict物件,你可以繼續的根據情況來查詢等操作。

如果你覺得上面的定義比較麻煩的話,你也可以在定義主表的外來鍵的時候,給這個外來鍵定義好乙個名稱。要用related_name比如:

person = models.foreignkey(person, related_name='person_set')

那麼上面的話:book = person.book_set.all()

也可以用book = person.person_set.all()

上面的是查詢是通過主表來查詢子表的信。

下面我簡單的說下通過子表來查詢主表的資訊。

假設我要查詢一本書籍所關聯的作者的資訊,那我可以通過下面的步驟來實現:

假如我先得到了乙個子表的物件。那我只要獲取該物件關聯主表的外來鍵的熟悉,就可以得到主表的資訊了。

比如我得到乙個book物件,然後我想得到book物件的主表person的資訊的話:

p = book.person

我個人感覺person有點像指標,儲存著person主表物件的位址,呵呵!不過python沒有指標這個概念,這是我覺的更好理解。

django 一對多關係操作

這段時間用django 做程式用到了一對多的關係的操作,下面分享一些心得體會,希望對大家有幫助。我先定義兩個模型,乙個是作者,乙個是作者出版的書籍,算是一對多的型別。class person models.model name models.charfield 作者姓名 max length 10 ...

sqlalchemy 一對多 關係

import os import sqlalchemy from sqlalchemy import create engine,column,integer,string,foreignkey,sequence from sqlalchemy.ext.declarative import decl...

Mvc Entityfraome一對多關係對映

第一資料庫建立 第二建立mvc ef專案 注意要點 如下資料庫表 t classes,t students 建立兩個類與資料庫表相對應 public class class public string name public virtual icollectionstudent new list p...