2017-06-15 56 views
0

我正在對3個表執行相同的查詢,然後將所有查詢結合在一起。 但我覺得我消耗了很多資源,因爲它們有點複雜,我希望能夠爲所有三個表創建單個查詢,這在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的壓縮方法。

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 
相關問題