2011-07-12 4 views
1

私はdjangoを使用しています。フォローボタンを作成して、一度クリックするとフォロワーのグループに現在のユーザーが含まれ、フォロワーの数が表示されます。アンフォローボタンもありますが、それは明らかに反対です。フォローボタンを作成しますか?どのように効率を最大化する?

私の質問は、できるだけ効率的に、可能な限り少ない数のクエリでこれを行う方法です。私はユーザーと投稿(それに続く)との間に何度も関連性を持つつもりです。それで、フォロー/アンフォローボタンをクリックすると、ユーザー、user_to_post、およびポストテーブルに新しいオブジェクトを挿入する1つのクエリが存在すると推測しています。また、フォロワーの数を取得すると、countを指定してuser_to_postテーブルから別のクエリを取得します。私はこれについては分かりませんが、このアプローチでは合計4つのクエリ(3つの挿入/削除、1つの選択)が必要と仮定しています。

これを行うにはどのような方法が効果的ですか?

ありがとうございます!

答えて

0

私見:

やフォロワーの数を取得するには、カウントをuser_to_postテーブルから別のクエリがかかります。

  1. あなたは、あなたがそれを持っているよりも、何かを挿入する場合は、何かを取得する必要はありません。このデータを取り出して使用するか、不要な変数などの他の関数に渡してください。 あなたのページにuser_to_postの番号を付けることができます。それはあなたの要求に存在します。 (あなたがそれらをレンダリングする場合)そして、あなたはこの変数をフォームに渡して、増減しているものに応じてvar_count + 1または-1を作ることができます。

  2. なぜ何かを投稿するには3つのクエリを作成する必要がありますか?あなたの(ビューまたはどこであなたがクエリを作る)コードを表示してください...あなたは3つのモデルにデータを書き込むために1つのクエリを作成するit_を書くことができます...メインモデルに影響するフィールドがある場合。例えば、あなたは1つのクエリを作成し、それが構造select_related()を介してデータにアクセスすることができる関連するモデルを持つ外国キー/多対多のフィールドを持っています。参照:select related Django API referenceおよびMaking queriesを参照してください。

は、私はポストを見ている人には、総フォロワー数を表示する場合は?その変数は、もはや唯一の生きていないだろうか...

+0

1.あなたのコードで、より具体的な質問をアスケすること自由に落ちましたそのため、サーバー上に何らかの種類のストレージが必要になります。 – Derek

+0

2.クエリ自体はdjangoコードのものであるかもしれませんが、コードはSQLで複数のクエリを実行します。例えばhttps://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationshipsはあなたのための結合を行いますが、結合を行うことは時には2つのクエリを作ることに匹敵します(状況)ので、私が作成する結合/クエリの数を制限したい – Derek

+0

1.あなたのビューにデータを「POST」しますか? jQueryまたはJavaScriptを使用してページ上の番号を変更すると、djangoのVIEWがサーバー側でそのコードを変更します。したがって、モデルにデータを保存しますが、モデルからデータを再度取得することはありません。コードはもっと詳しく教えてください:) – garmoncheg

関連する問題