0

概要:各ユーザーアカウントには、電話番号や住所などの拡張情報を保持するための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を選択するためのより良い方法を誰かが考えることができますか?

4

2 に答える 2

2

データベースではなく、セッションで使用されているプロファイルを追跡してみませんか。状態をデータベースに保存することは意味がありません。それがセッションの目的です。

于 2010-04-24T19:08:26.560 に答える
1

現在使用されているIDを追跡するためにUserProfileがあると便利な場合があります。

各IDが異なるモデルであると仮定すると、これを実現するために2つのことのいずれかを実行できます。

  • 各IDクラスが継承する共通の親モデルクラスを持つことができ、プロファイルの外部キーを親IDクラスに追加することができます。

  • または、継承が実用的に意味をなさない場合は、一般的な関係を使用できます。

于 2010-04-24T19:37:12.553 に答える