gpt4 book ai didi

django-filter - 如何使用graphene-django通过GraphQL中的id列表过滤查询?

转载 作者:行者123 更新时间:2023-12-04 06:26:06 25 4
gpt4 key购买 nike

我正在尝试使用 Django 和 Graphene 执行 GraphQL 查询。要使用 id 查询单个对象,我执行了以下操作:

{
samples(id:"U2FtcGxlU2V0VHlwZToxMjYw") {
edges {
nodes {
name
}
}
}
}

它工作正常。当我尝试使用多个 id 进行查询时出现问题,如下所示:
{
samples(id_In:"U2FtcGxlU2V0VHlwZToxMjYw, U2FtcGxlU2V0VHlwZToxMjYx") {
edges {
nodes {
name
}
}
}
}

在后一种情况下,我收到以下错误:
argument should be a bytes-like object or ASCII string, not 'list'

这是如何在 django-graphene 中定义类型和查询的草图
class SampleType(DjangoObjectType):
class Meta:
model = Sample
filter_fields = {
'id': ['exact', 'in'],
}
interfaces = (graphene.relay.Node,)

class Query(object):
samples = DjangoFilterConnectionField(SampleType)

def resolve_sample_sets(self, info, **kwargs):
return Sample.objects.all()

最佳答案

GlobalIDMultipleChoiceFilter从 django-graphene 有点解决这个问题,如果你在字段名称中输入“in”。您可以创建过滤器,例如

from django_filters import FilterSet
from graphene_django.filter import GlobalIDMultipleChoiceFilter

class BookFilter(FilterSet):
author = GlobalIDMultipleChoiceFilter()

并使用它
{
books(author: ["<GlobalID1>", "<GlobalID2>"]) {
edges {
nodes {
name
}
}
}
}

仍然不完美,但对自定义代码的需求已最小化。

关于django-filter - 如何使用graphene-django通过GraphQL中的id列表过滤查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54218505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com