[解決済み] django でクエリセット内のオブジェクトの数を取得する
2023-04-22 09:46:02
質問
データベースにオブジェクトの数を表示するフィールドを追加するにはどうしたらよいでしょうか。私は以下のモデルを持っています。
class Item(models.Model):
name = models.CharField()
class Contest(models.Model);
name = models.CharField()
class Votes(models.Model):
user = models.ForeignKey(User)
item = models.ForeignKey(Item)
contest = models.ForeignKey(Contest)
comment = models.TextField()
contestAへの投票を見つけるために、ビューで次のクエリを使用しています。
current_vote = Item.objects.filter(votes__contest=contestA)
これは、すべての投票を個別に含むクエリセットを返しますが、私は各項目のカウント投票を取得したいのですが、誰かそれを行うことができる方法を知っていますか? ありがとうございます。
どのように解決するのですか?
特定の項目の投票数を取得するには、次のようにします。
vote_count = Item.objects.filter(votes__contest=contestA).count()
もし、あるコンテストの投票分布の内訳が知りたかったら、次のようなことをすると思います。
contest = Contest.objects.get(pk=contest_id)
votes = contest.votes_set.select_related()
vote_counts = {}
for vote in votes:
if not vote_counts.has_key(vote.item.id):
vote_counts[vote.item.id] = {
'item': vote.item,
'count': 0
}
vote_counts[vote.item.id]['count'] += 1
これは、アイテムと投票数を対応させる辞書を作成します。これが唯一の方法というわけではありませんが、データベースのヒット数がかなり少ないので、かなり速く実行されるでしょう。
関連
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
6.5、Django - モデルでJSONFieldを使用してJSONフィールドでMySQLテーブルを作成する
-
[解決済み] QuerySetで空白またはNULLの名前をフィルタリングする方法は?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み] シグナルハンドラは django プロジェクトのどこにあるべきですか?
-
[解決済み] Django は静的ファイルの URL をビューで取得します。
-
[解決済み] Django テンプレート url タグに url パラメータを追加する方法は?
-
[解決済み] django のテンプレートで最初の文字を大文字にする
-
[解決済み] django のユニットテストを複数のファイルに分散させるには?
-
[解決済み] あるdjangoアプリから新しいアプリにモデルを移行するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ユニコードオブジェクトはハッシュ化する前にエンコードする必要がある問題を解決
-
Django ForeignKey逆引きクエリにおけるfilterと_setの効率比較
-
Djangoキャッシュの説明
-
[解決済み] NoReverseMatchエラーとは何ですか、またどのように修正しますか?
-
[解決済み] Django のカスタムフィールドで User モデルを拡張する
-
[解決済み] (13: Permission denied) 上流:[nginx]に接続中。
-
[解決済み】Djangoでモデルインスタンスをシリアライズする方法は?
-
[解決済み] DjangoのRest Frameworkはcsrfを削除します。
-
[解決済み] テーブルのフィールドから異なる値を選択する
-
[解決済み] Django 1.9 の apps.py の目的は何ですか?