gpt4 book ai didi

json - 结合 DjangoObjectType 和 ObjectType - Django, GraphQL

转载 作者:行者123 更新时间:2023-12-05 07:03:29 26 4
gpt4 key购买 nike

我正在尝试将 DjangoType 与 ObjectType 结合起来。

我有模型:


class Scenario(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=50)

class Result(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
scenario = models.ForeignKey(
'optimiser.Scenario',
on_delete=models.CASCADE,
related_name='result'
)
data = JSONField()

我想做的是用结果模型的外键查询场景

在我的模式中我有:

class JsonClass(ObjectType):
key = graphene.String()
header = graphene.String()

class Result(ObjectType):
id = graphene.Int()
data = graphene.Field(JsonClass)

class ScenarioJson(ObjectType):
key = graphene.String()
value = graphene.String()

class ScenarioData(ObjectType):
id = graphene.Int()
name = graphene.String()
data = graphene.Field(ScenarioJson)
result = graphene.Field(Result)

为了测试它如何与 DjangoObjectType 一起工作,我得到了所有结果,所以我想将其实现到 ObjectType 中

class ScenarioType(DjangoObjectType):
class Meta:
model = Scenario

还有我的查询:

class Query:
scenario = graphene.Field(ScenarioData, id=graphene.Int())
def resolve_scenario(self, info, **kwargs):
return Scenario.objects.get(id=kwargs.get('id'))

所以基本上我得到的是:

query {
scenario(id: 100) {
id, // 100
name, // Scenario1
data: {
key, // scenario key1
value // value key1
},
result {
id // null
data // null
}
}
}

当我将 ScenarioType 与 DjangoObjectType 结合使用时,我得到了所有结果,但我无法查询 JSON

query {
scenario(id: 100) {
id, // 100
name, // Scenario1
data: "{'key' : 'scenario key1', ..}" // string
result {
id // 12
data // "{'key1': 'ke2'}"
}
}
}

所以我想知道如何在 ObjectType 中实现 DjangoObjectType?

最佳答案

我认为您应该为此使用 GenericScalar。看看这篇 GitHub 帖子:

https://github.com/graphql-python/graphene-django/issues/303#issuecomment-440450677

关于json - 结合 DjangoObjectType 和 ObjectType - Django, GraphQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63194446/

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