石墨烯:“期望 XXX 类型的值,但收到:...”

Posted

技术标签:

【中文标题】石墨烯:“期望 XXX 类型的值,但收到:...”【英文标题】:Graphene: "Expected a value of type XXX but received: ..." 【发布时间】:2020-11-18 08:24:44 【问题描述】:

我正在使用graphene-django 来构建我的 API。我有一个名为 StoreType 的 DjangoObjectType,它代表模型商店。此模型有一个名为 opening_days 的 MultiSelectField,它指示商店在一周中的哪几天营业。为了创建新商店,我使用了这个突变:

class Weekdays(graphene.Enum):
    MO = "Mo"
    TU = "Tu"
    WE = "We"
    TH = "Th"
    FR = "Fr"
    SA = "Sa"
    SU = "Su"

class CreateStore(graphene.Mutation):
    store = graphene.Field(StoreType)

    class Arguments:
        opening_days = graphene.Argument(graphene.List(Weekdays))

    def mutate(self, info, opening_days):
        store = Store(opening_days=opening_days)
        store.save()
        return CreateStore(store=store)

突变效果很好。但是,当我尝试查询商店时,我收到错误"Expected a value of type \"StoreOpeningDays\" but received: Monday, Tuesday",,这确实很有意义,因为该字段将数据保存为单个字符串,其中的值用逗号分隔。问题是石墨烯需要graphene.List(Weekdays) 中指定的列表,这是无法检索的。

关于如何解决这个问题的任何想法?提前致谢!

【问题讨论】:

你能分享 Django 模型和StoreType 的代码吗?如果数据按预期存储在数据库中,您只需为StoreType 上的opening_days 字段创建一个自定义解析器即可返回正确的类型。 请分享商店模型 【参考方案1】:

你有一行写着:

return CreateStore(store=store)

= 两边的 store 变量的小写使我相信出站或入站信息都指向自身。

虽然不熟悉graphene-django...

检查 store 变量的范围。如果左侧是要引用 CreateStore 函数中的参数名称,则尝试重命名右侧以确保它们不冲突。

CreateStore 参数是否需要以特殊字符作为前缀,以便程序知道它直接引用了 CreateStore 函数中定义的参数名称?就像 C# 中的 SQL 命令参数一样:

cmd.Parameters.AddWithValue("@myparmname", mylocalval);

【讨论】:

以上是关于石墨烯:“期望 XXX 类型的值,但收到:...”的主要内容,如果未能解决你的问题,请参考以下文章

什么是石墨烯

石墨烯是什么

石墨烯是什么东西

60v60han石墨烯能跑多远?

石墨烯

石墨烯材料的前沿进展,人工智能,芯片,能源。。。