クエリセットのフィルタリングに問題があります。ここで簡略化されたデータモデルである:カスタムフィルタバックエンドを使用した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を探している
これは非常に単純なオブジェクト! – RaffAl