1

というモデルがあります

class UserTag(models.Model):
  name = models.CharField(max_length=64, unique= True)
  users = models.ManyToManyField(User)

このようなユーザーに基づいてコンテンツをフィルタリングしようとしています

usertags = UserTag.objects.filter(users=request.user)

ここで、この特定のクエリのすべてのタグ名のリストが必要です。おそらくループを使用できることを知っています

for tag in usertags:
  tags.append(tag.name)

しかし、ユーザーが 1000 個のタグを持っている場合はどうなるでしょうか? これは応答を遅くしませんか?これを処理するためのより効率的な方法はありますか?

4

1 に答える 1

6

タグ名だけが必要な場合は、values_listクエリを使用します。

tags = UserTag.objects.filter(users=request.user).values_list('name', flat=True)
于 2013-02-14T01:36:58.183 に答える