json - 结合 DjangoObjectType 和 ObjectType - Django, GraphQL
问题描述
我正在尝试将 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 一起工作,我得到了所有 Result 所以我想将它实现到 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
推荐阅读
- node.js - NodeJs/Express 请求被 SetTimeout 阻止?
- spring - Spring批处理阅读器抱怨资源
- python - 如何使用 python Bokeh 绘制圆形图 LinearColorMapper
- webgl - WebGL 并行性的 Hello World 示例
- google-apps-script - Google 应用程序脚本 - 制作电子表格的单个副本
- angular - ERROR 错误:StaticInjectorError(AppModule)[UserformService -> HttpClient]:
- google-app-maker - 如何对其数据源是关系的表进行排序
- java - 通过 Socket 持续连接到服务器,直到建立连接
- javascript - 使用 JS/HTML 调用流注/Fom
- mysql - “解析 config/database.yml 时发生 YAML 语法错误”Ruby on Rails