2017-06-15 7 views
0

3つのテーブルに対して同じクエリを実行してから、すべてをまとめて実行します。 しかし、私は少し複雑なクエリであるため、このように多くのリソースを消費していると感じています.3つのテーブルすべてに対して1つのクエリを作成できるようにしたいのですが、これはDjangoで可能ですか?Djangoは複数のテーブルで同じクエリを作成します

私はSQLAlchemyのに似たものがあることを知っている:

SQLAlchemy How to joiun several tables by one query

コード:

# Review Dish 
recent_dish_review = restaurant.models.DishReview. \ 
           objects.filter(user_id__in=id_follows, 
               created_at__lte=timezone.now(), 
               created_at__gte=days 
              ).order_by('-created_at')[:limit] 

# Review Restaurant 
recent_restaurant_review = restaurant.models.RestaurantReview. \ 
           objects.filter(user_id__in=id_follows, 
               created_at__lte=timezone.now(), 
               created_at__gte=days 
              ).order_by('-created_at')[:limit] 

# User Like Dish 
recent_like_dish = restaurant.models.DishesLikes. \ 
           objects.filter(foodie_id__in=id_follows, 
               created_at__lte=timezone.now(), 
               created_at__gte=days 
              ).order_by('-created_at')[:limit] 

return list(sorted(chain(recent_restaurant_review, recent_dish_review, recent_like_dish)) 

答えて

1

のpythonの使用のzip方法は。

single_queryset = zip(recent_restaurant_review, recent_dish_review, recent_like_dish) 
return single_queryset 

注:すべてのクエリーセットは、それぞれに同じオブジェクト数を持つ必要があります。

あなたは以下のようなジップクエリセットを反復処理することができます。

form restaurant, dish, like in single_queryset: 
    print restaurant, dish, like 
関連する問題