Django Graphene filter 国外模型
Django Graphene filter Foreign Model
我需要根据权限在后端过滤我请求的对象。
对于以下查询:
query {
foos {
id
name
barSet {
id
name
}
}
}
有 foo 和 bar 的权限,我只需要 return 一些 foo 和一些 bars。
我知道我可以对 foos 使用字段查找
class FooType(DjangoObjectType):
class Meta:
model = Foo
class BarType(DjangoObjectType):
class Meta:
model = Bar
class Query(object):
foos = graphene.List(FooType)
def resolve_foos(self, info, **kwargs):
# id_list = some code to create a list of ids of possible foos
return Foo.objects.filter(id__in=id_list)
假设我有一个可能的柱状图列表,我如何在 graphql 查询请求时对柱状图进行 过滤?
在 FooType
中,您需要为栏字段创建一个自定义解析器,您可以在其中应用权限过滤。例如,假设 Bar
上的管理器方法称为 filter_by_user
:
class FooType(DjangoObjectType):
bars = graphene.List(BarType)
class Meta:
model = Foo
def resolve_bars(self, info):
# do something to filter Bars by permissions
return self.bar_set.filter_by_user(info.context.user)
此外,在 Bar Meta 中,如果自动添加,您可能需要为 bar_set
字段添加 exclude_fields
。
我需要根据权限在后端过滤我请求的对象。
对于以下查询:
query {
foos {
id
name
barSet {
id
name
}
}
}
有 foo 和 bar 的权限,我只需要 return 一些 foo 和一些 bars。
我知道我可以对 foos 使用字段查找
class FooType(DjangoObjectType):
class Meta:
model = Foo
class BarType(DjangoObjectType):
class Meta:
model = Bar
class Query(object):
foos = graphene.List(FooType)
def resolve_foos(self, info, **kwargs):
# id_list = some code to create a list of ids of possible foos
return Foo.objects.filter(id__in=id_list)
假设我有一个可能的柱状图列表,我如何在 graphql 查询请求时对柱状图进行 过滤?
在 FooType
中,您需要为栏字段创建一个自定义解析器,您可以在其中应用权限过滤。例如,假设 Bar
上的管理器方法称为 filter_by_user
:
class FooType(DjangoObjectType):
bars = graphene.List(BarType)
class Meta:
model = Foo
def resolve_bars(self, info):
# do something to filter Bars by permissions
return self.bar_set.filter_by_user(info.context.user)
此外,在 Bar Meta 中,如果自动添加,您可能需要为 bar_set
字段添加 exclude_fields
。