Сводка: Каждая учетная запись пользователя имеет профиль пользователя для хранения расширенной информации, такой как номера телефонов, адреса и т. Д. Затем учетная запись пользователя может иметь несколько удостоверений. Существует несколько типов удостоверений, которые содержат разные типы информации. Структура будет выглядеть так:
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)?