2013-02-17 13 views

答えて

4

Productの属性に基づいてストアをフィルタリングし、次に取得したオブジェクトのprefetch_relatedを取得できるようにする必要があります。

Store.objects.filter(product__name="product_name").prefetch_related('product') 

あなたが探しているものを達成するためには、これはデータベースを最も少なくする必要があります。

さらに詳しい文書はhereです。

+1

これはから "PRODUCT_NAME" の製品を除外しません。 prefetch_relatedの結果 –

15

実際にこれらのことをDjangoで行うことができます。これは、怠慢なクエリーセット評価のためです。 Djangoのinフィールド検索は、リストとクエリセットの両方を受け入れます。以下は、ネストされたSQLコードを作成します。

stores_qs = Store.objects.filter(product__name='product_name') 
products = Product.objects.filter(store_set__in=stores_qs) 

Here

はジャンゴ inドキュメントです。

0

"PRODUCT_NAME" という名前の製品に店舗を取得:

Store.objects.filter(product__name='product_name') 

は名前 "PRODUCT_NAME" と品の場合を除き、すべての製品を取得します。

Product.objects.exclude(name='product_name') 
関連する問題