2 つの別個のモデルに関連し、それら 2 つのモデルの組み合わせに固有のデータ セットを含むモデルを作成する必要があります。
たとえば、ユーザーProfile
モデルとモデルがあるとしDessert
ます。Profile
モデルにはユーザーの好みと個人情報が含まれ、モデルDessert
にはデザートに関する情報 (カロリー、コスト、種類など) が含まれます。ここで、ユーザーが特定のデザートの「味覚テスト」の結果を記録できるモデルを作成したいと考えています。各ユーザーはデザートごとに味覚テストを実行できますが、1 回のみ実行できます (つまり、味覚テストはユーザーとデザートの組み合わせごとに一意です)。
どうすればこれを達成できますか?ほとんどの場合、デザートまたはユーザーのプロファイルにアクセスする必要があるthrough
ため、味のテスト (たとえば、デザートに関する情報を表示し、他のデザートと比較するため)。Aは、多くの不必要なオーバーヘッドを追加します。through
私が思いつく最善の解決策は、次のような「TasteTest」モデルを作成することです。
class TasteTest(models.Model):
user_profile = models.ForeignKey(Profile)
dessert = models.ForeignKey(Dessert)
# Taste test results here
関連する質問が 2 つあります。まず、これはこれを行うための最良/正しい方法ですか? それとももっと良い方法がありますか?2 つ目は、ルックアップを行う際に関係するデータベースのオーバーヘッドはどのようなものですか? 特定のデザートの特定のユーザーの味覚テストにアクセスするには、次のようにする必要があるようです。
user.profile.tastetest_set.get(dessert=given_dessert.pk)`
これは高価なルックアップになる可能性があるようです(ただし、私はDBのことにはあまり慣れていないため、質問します)。