Django/Graphene
バックエンド セットアップにいくつかのビデオ アイテムがあります。各動画アイテムは 1 人の所有者にリンクされています。React アプリでは、現在のユーザーが所有するすべてのビデオと、現在のユーザーが所有していないすべてのビデオを GraphQL 経由でクエリしたいと考えています。
GraphQl
クライアント側で次のクエリとフィルターを実行できます。
query AllScenes {
allScenes {
edges {
node {
id,
name,
owner {
name
}
}
}
}
}
バックエンドに関連データを直接要求するフィルター パラメーターを使用した 2 つのクエリが必要です。何かのようなもの:
query AllScenes($ownerName : String!, $exclude: Boolean!) {
allScenes(owner__name: $ownerName, exclude: $exclude) {
edges {
node {
id,
name,
owner {
name
}
}
}
}
}
クエリを実行しますownerName = currentUserName
が、バックエンド側で引数をexclude = True/False
取得できません。exclude
schema.py ファイルで試したコードは次のとおりです。
from project.scene_manager.models import Scene
from graphene import ObjectType, relay, Int, String, Field, Boolean, Float
from graphene.contrib.django.filter import DjangoFilterConnectionField
from graphene.contrib.django.types import DjangoNode
from django_filters import FilterSet, CharFilter
class SceneNode(DjangoNode):
class Meta:
model = Scene
class SceneFilter(FilterSet):
owner__name = CharFilter(lookup_type='exact', exclude=exclude)
class Meta:
model = Scene
fields = ['owner__name']
class Query(ObjectType):
scene = relay.NodeField(SceneNode)
all_scenes = DjangoFilterConnectionField(SceneNode, filterset_class=SceneFilter, exclude=Boolean())
def resolve_exclude(self, args, info):
exclude = args.get('exclude')
return exclude
class Meta:
abstract = True
カスタムが使用されていますが、引数をSceneFilter
渡す方法がわかりません。(私はリゾルバーexclude
を適切に使用しているとは思いません)。その問題についての助けは大歓迎です!