に().count使用するようにこれらは私が私の小さなプロジェクトタグのリストが私に与えられている右の時間DjangoのORM
class Tag(models.Model):
name = models.CharField(max_length=200)
class Post(models.Model):
content = models.CharField(max_length=200)
tags = models.ManyToManyField(Tag)
location = models.PointField(null=True, blank=True)
(最大3)を持っているモデルがあります。これらのタグのそれぞれが投稿に表示されるタグの回数を調べる必要があります。その後、私は次のクエリを使用して、すべてのポストデータをフェッチ私は
for tag in tags:
tag_data[tag] = Post.objects.filter(
tags__name=tag,
location__distance_lte=(
pnt, D(km=distance))).count()
をやっているタグの数を取得するために
[「ハイテク」、「面白い」、「オタク」]言うことができます。
posts = Post.objects.filter(
tags__name__in=tags,
location__distance_lte=(pnt, D(km=distance)))
私はすでに機能の最後に投稿をループしています。
for post in posts:
#some logic
私はそこにタグのデータがあることを知っています。カウントを見つけるために上記のような別々のデータクエリを行う必要はありません。しかし、私はforループ内のタグの数を見つけたいと思ったら、forループ内に1つ以上forループが必要です。
for post in posts:
#some logic
for tag in post.tags:
#some logic
ここで私の質問がより効率的です。 .count()を使ってフェッチするか、ループのためにネストします。 DjangoのORMで
'tag_data [em_id]'に 'em_id'とは何ですか? –
それはタイプミスでした。 updated –
私が理解しているように、特定の 'Post'でタグ付けされた' Tag'の数を数えたいと思っています。正しい?あるいは 'Post'''タグがいくつ使われたのかを数えたいのですか?あなたが数えたい実際のものは何ですか? –