2011-10-26 30 views
6

私はモデルをauth.Userオブジェクトに直接参加させることと、ユーザーのプロファイルモデルとを結びつけることにどんな考えがあるのだろうかと思います。ForeignKey to Django UserかProfileモデルか?

私のユーザーが自分のアプリケーションで追加しているいくつかの異なるタイプのモデルを保存しています。アプリユーザーは、これらのモデルの基準によって他のユーザーを検索します。

私はユーザーに直接参加すると、ユーザーのレコードを取得する必要があるたびにrequest.user.get_profile()を実行する必要はないと考えています。ユーザーがいつもプロファイルを持っていることを前提としています(彼らは私のアプリではまだですが、それでもやっています)。これにより、プロファイルモデルはユーザーの連絡先の詳細だけを含むものとなります。

一方、他のモデルを見ているときにプロファイルからの値(名前、場所など)が必要な可能性が高いと思います。

いずれもうまくいきますが、おそらくそれは問題ではありませんが、私は他の人の考えがどんなものかと疑問に思いました。

ありがとうございます!

ルド。

答えて

1

一般的に、アプリを再利用可能にする場合は、常にUserモデルに外部キーを作成します。

すでに述べたように、ほとんどの場合、複数のデータベースクエリを防ぐために、キャッシュを使用するように、UserインスタンスとProfileインスタンスが必要です。

再利用性が重要でない場合は、プロファイルに外部キーを作成し、select_related()を使用して単一のクエリでユーザーインスタンスを取得します。

2

Userモデルへの外部キーの作成もお勧めします。ビューの中でユーザーオブジェクトを操作するときは、あなたの人生を単純化します。したがって、プロファイルモデルを経由することなく、request.user.foo_setなどのことを行うことができます。

+0

私はそれを考慮しませんでした。健全なアドバイス。 – sleblanc

関連する問題