2017-11-06 17 views
0

クエリセットのフィルタリングに問題があります。ここで簡略化されたデータモデルである:カスタムフィルタバックエンドを使用したdjango rest frameworkクエリセットのフィルタリング

Entry 
- id 
- broadcast_groups 

User 
- id 
- groups 

そこでエントリは、グループ内の(共有)ブロードキャストすることができます。私はエントリオブジェクトを返すGET /entries/エンドポイントを持っています。

  • は、ユーザーがメンバーであるOR
  • はグループで放送されているすべてのグループで放送されていません。

    は、私は、次の要件を満たすエントリを返すように設定されたクエリをフィルタリングします。

私はこれを達成するために私の頭を傷つけています。私はおそらくカスタムを書くことを考えましたFilterBackendは良いアイデアです。これまで私が持っているものは次のとおりです。

class CanViewPublicOrGroupMemberEntriesFilterBackend(filters.BaseFilterBackend): 

    def filter_queryset(self, request, queryset, view): 
     user = request.user 
     return queryset.filter(broadcast_groups__in=user.groups.all()) 

しかし、これは私が期待している結果をもたらしません。このようなフィルタリングを行うには、どのような構文のfilter()がありますか?または、私は間違った側から問題に近づいていますか?あなたはQを探している

答えて

関連する問題