在django 中實現 一對一關係。
要定義一對一關係,請使用onetoonefield。
在這個例子中,乙個地方可以是餐廳:
from django.db import models
# 工作地點
class
place
(models.model)
:# 名稱
name = models.charfield(max_length=50)
# 位址
address = models.charfield(max_length=80)
def__str__
(self)
:return
"%s the place"
% self.name
class
restaurant
(models.model)
:# 餐館,它既是外來鍵,又是主鍵
place = models.onetoonefield(
place,
on_delete=models.cascade,
primary_key=
true,)
# **啥啥啥。
serves_hot_dogs = models.booleanfield(default=
false
) serves_pizza = models.booleanfield(default=
false
)def
__str__
(self)
:return
"%s the restaurant"
% self.place.name
class
waiter
(models.model)
:# 餐館是一對多關係。
restaurant = models.foreignkey(restaurant, on_delete=models.cascade)
name = models.charfield(max_length=50)
def__str__
(self)
:return
"%s the waiter at %s"
%(self.name, self.restaurant)
總體給人的感覺有點像繼承,就像餐館繼承於地點。
總的來說,就像使用者管理中,有不同的使用者角色有不同的許可權,可以基本user。一對一產生其他角色。
一對一關係
1 共享主鍵方式 共享主鍵方式就是限制兩個資料表的主鍵使用相同的值,通過主鍵形成一對一的對映關係。如 學員的登入帳號資訊和學員的詳細分別存放到兩張不同的表中。表 持久化類 public class student public class stupwd student.hbm.xml cascade...
一對一關係對映
主鍵關聯 兩個關聯的實體在表中具有相同的主鍵值,這個主鍵可只由其中乙個表生成,在另外乙個表中通過對映檔案中使用主鍵的foreign生成機制引用已經生成的主鍵值。student類 public class student public void setcard card card public stu...
一對一關係對映
兩端都需要配置 onetoone,但需要對映外來鍵維護關係的一端,額外新增 joincolumn 屬性。含有主鍵的一方預設是立即載入機制,但可以通過fetch 屬性調整,但是沒有主鍵的一端,無論如何更改fetch,都是立即載入,會額外傳送一條查詢語句。原因是,含有外來鍵的一方可以根據外來鍵判斷是否為...