1

アイテムのコレクション (CollectionItem) を表す Collection という Django モデルがあります。各コレクションには、特定のタイプのアイテムのみが含まれます。(CollectionItem には Collection への外部キーがあります)。

特定のタイプの公開フラグ付きリストにあるすべての CollectionItems を取得し、特定のフィールドで並べ替えて返したいと考えています。私が使用するクエリコードは次のとおりです。

lists = Collection.objects.filter(is_public=True, type=7)
items = CollectionItem.objects.none()
for list in lists:
    items |= CollectionItem.objects.filter(collection=list)
items = items.order_by('name')

大量のリストとアイテムを含む大規模なデータベースがある場合、これはまったくうまく拡張できないと想像する必要があります。Djangoでこれを行うより良い方法はありますか? それとも、クエリ ループに伴う非効率性は、他のオプションと比較して無視できる程度なので、あまり心配する必要はないでしょうか?

4

1 に答える 1

8

あなただけが必要なように聞こえます:

items = CollectionItem.objects.filter(
                    collection__is_public=True, collection__type=7
               ).order_by('name')
于 2009-08-06T17:38:52.153 に答える