【发布时间】:2020-11-21 10:54:42
【问题描述】:
我正在尝试将 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?
【问题讨论】:
-
您的 JSON 没有遵循正确的结构吗?
标签: json django parsing graphene-python