劇情簡介:每個用戶帳戶都有一個UserProfile來存放電話號碼,地址等擴展信息。然後,用戶帳戶可以有多個標識。有多種類型的身份持有不同類型的信息。該結構將是像這樣:Django - 具有多個身份的用戶帳戶
User
|<-FK- UserProfile
|
|<-FK- IdentityType1
|<-FK- IdentityType1
|<-FK- IdentityType2
|<-FK- IdentityType3 (current)
|<-FK- IdentityType3
|<-FK- IdentityType3
用戶帳戶可以連接到不同類型的身份的n個,但只能在同一時間使用一個認同。
看起來,Django的方式是將所有連接的身份(user.IdentityType1_set.select_related())收集到一個QuerySet中,然後檢查每個身份的某個'當前'字段。
問題:任何人都可以想到一個更好的方法來選擇'當前'標記身份比做三個數據庫查詢(每個身份類型一個)?
您提出了一個非常好的觀點。因此,在三種IdentityType模型之間,您需要某種獨特的ID作爲字符串存儲在會話中,對嗎?或者,僅僅存儲一個僅適用於該類型的身份類型和ID的難度是否會更小?對不起,我還在學習...... – Scott 2010-04-24 20:43:27
那麼會話對用戶來說已經是獨一無二的了,只需存儲identityType的ID? – 2010-04-25 00:53:08