概要:各ユーザーアカウントには、電話番号や住所などの拡張情報を保持するためのUserProfileがあります。次に、ユーザーアカウントは複数のIDを持つことができます。さまざまな種類の情報を保持する複数の種類のIDがあります。構造は次のようになります。
User
|<-FK- UserProfile
|
|<-FK- IdentityType1
|<-FK- IdentityType1
|<-FK- IdentityType2
|<-FK- IdentityType3 (current)
|<-FK- IdentityType3
|<-FK- IdentityType3
ユーザーアカウントは、さまざまなタイプのn個のIDに接続できますが、一度に使用できるIDは1つだけです。
どうやら、Djangoの方法は、接続されているすべてのID(user.IdentityType1_set.select_related())をQuerySetに収集し、それぞれに何らかの「現在の」フィールドがあるかどうかを確認することです。
質問: 3つのDBクエリ(IdentityTypeごとに1つ)を実行するよりも、「現在の」マークが付けられたIdentityを選択するためのより良い方法を誰かが考えることができますか?