2017-03-01 58 views
1

我有兩個表,一個叫Company,另一個叫User,每個用戶都與一個使用ForeignKey的公司有關。所以,我可以使用反向關係在Django獲得所有用戶的特定公司(例如company.users如何限制在Django中的反向關係結果

就我而言,我建立ListAPIView其返回多個公司,我想返回最新創建的用戶。我的問題是,我不想使用prefetch_relatedselect_related,因此它會加載所有用戶,因爲我們最終可能每個公司有數千用戶!另外,我不想在單獨的查詢中加載每個最新用戶,因此我們最終每個API請求都有數十個查詢!

我已經試過這樣的事情:

users_qs = models.User.objects.filter(active=True).order_by('-created') 
company_qs = models.Company.objects.prefetch_related(
       Prefetch('users', queryset=users_qs[:1], to_attr='user') 
      ).order_by('-created') 

在這種情況下,prefetch_related失敗,因爲我們無法限量的Prefetchqueryset過濾器(它給這個錯誤「無法一次篩選查詢已經採取了切片。「)

任何想法?

回答

0

我想你是提供一個對象而不是查詢集Prefetch('users', queryset=users_qs[:1], to_attr='user')