概要:每个用户帐户都有一个 UserProfile 来保存电话号码、地址等扩展信息。然后,一个用户帐户可以有多个身份。有多种类型的身份持有不同类型的信息。结构将是这样的:
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 一个)更好的方法来选择“当前”标记的身份?